當前位置: 首頁> 最新文章列表> 如何使用money_format輸出兩位小數的貨幣格式?

如何使用money_format輸出兩位小數的貨幣格式?

gitbox 2025-05-26

什麼是money_format函數?

money_format是PHP內置的一個格式化函數,用於根據區域設置(locale)格式化貨幣字符串。它的語法如下:

<code> string money_format ( string $format , float $number ) </code>
  • $format是格式字符串,定義輸出格式。

  • $number是需要格式化的數字。

需要注意的是, money_format函數依賴於系統的區域設置,如果沒有正確設置locale,可能無法正確顯示貨幣符號或格式。


設置Locale

在調用money_format之前,需要使用setlocale函數設置適當的區域環境。例如,設置為美國的英語環境:

<code> setlocale(LC_MONETARY, 'en_US.UTF-8'); </code>

如果你的系統不支持這個locale,需要根據服務器環境調整。


格式字符串說明

money_format的格式字符串以%開頭,後面可以有多個修飾符:

  • %i :國際貨幣格式(含貨幣代碼,如USD)

  • %n :本地貨幣格式(含貨幣符號)


示例代碼:保留兩位小數的標準貨幣格式

假設我們有一個金額1234.5,想用money_format輸出帶美元符號,千分位,並保留兩位小數的格式。

<code> <?php // 設置區域環境為美國英語setlocale(LC_MONETARY, 'en_US.UTF-8');

$amount = 1234.5;

// 使用%n格式輸出本地貨幣格式,默認保留兩位小數
$formatted = money_format('%n', $amount);

echo $formatted;
?>
</code>

輸出結果通常是:

<code> $1,234.50 </code>

注意事項

  1. money_format函數只在Linux/Unix系統有效,Windows環境不支持。

  2. PHP 7.4之後官方建議使用NumberFormatter類代替money_format ,因為後者已標記為廢棄。

  3. 如果需要跨平台使用且兼容PHP新版本,推薦使用NumberFormatter


兼容性替代方案(推薦)

使用NumberFormatter實現相同功能:

<code> <?php $amount = 1234.5; $formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY); echo $formatter->formatCurrency($amount, 'USD'); ?> </code>

輸出同樣是:

<code> $1,234.50 </code>

結語

雖然money_format在很多舊項目中依然被使用,但出於兼容性和未來維護的考慮,建議使用NumberFormatter類來格式化貨幣。本文演示瞭如何用money_format輸出保留兩位小數的標準貨幣格式,並提供了現代替代方案,方便開發者根據需求靈活選擇。