我遇到了一些使用php NumberFormatter類的問題。我希望四捨五入的數字在沒有任何小數的情況下顯示,並且小數點後的數字以2位小數進行四捨五入。即使用numberFormatter格式化貨幣
$fmt = new NumberFormatter('nl', NumberFormatter::CURRENCY);
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 2);
var_dump($fmt->formatCurrency(15.15, 'EUR')); //Outputs € 15,15
var_dump($fmt->formatCurrency(15, 'EUR')); //Outputs € 15,00
正如你所看到的最後一個轉儲輸出15,00
但我在這裏期待15
。 每當我使用「完整」語言環境nl_NL
而不是nl
格式化程序的行爲與預期的一樣,但我無法使用它,因爲我的語言環境中只有可用的語言。
$fmt = new NumberFormatter('nl_NL', NumberFormatter::CURRENCY);
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 2);
var_dump($fmt->formatCurrency(15.15, 'EUR')); //Outputs € 15,15
var_dump($fmt->formatCurrency(15, 'EUR')); //Output € 15
這似乎是一個NumberFormatter中的錯誤,但我真的不知道如何解決它或找出其他解決方法。我會很感激任何幫助。
肯定看起來像一個錯誤。如果確實如此,修復不是使用NumberFormatter,而是創建自己的。爲了快速解決問題,您可以在字符串末尾查詢00格式化的貨幣,並且只要將它剝離即可。 –
感謝您的評論。因爲我們有一個擁有多種語言的網站,所以自己寫作並不是一個真正的選擇。如果沒有其他人有更好的解決方案,我可以實施這樣的修補程序。 –