修復PHP中的貨幣格式問題
P粉322319601
2023-08-08 22:10:55
<p><code>numfmt_format_currency(new NumberFormatter('en',2), 31.005, "USD")</code> This code outputs $31.00. But it should output $gt; This code outputs $31.00. But it should output $gt; This code outputs $31.00. But it should output $31.01. Howue 3?這段程式碼輸出的是$31.00。但應該輸出$31.01。如何解決這個問題? ? </p><p>PHP在價格格式方面無視將0.005轉換成0.01。 </p><p>我嘗試修復Magento的貨幣格式問題,但在PHP方面找到問題</p><p><br /></p>
31.005實際上在兩個數字之間,請查看https://php.net/float上的浮點精度。
(在PHP和其他語言中,沒有31.005這個數字。.)
#你需要提供足夠精確度的數字,但要盡可能少出現誤差,以符合你的顯示要求。這可以透過指定舍入模式來實現,例如,如果你想將31.005四捨五入到31.01,你可以選擇向上舍入或向下舍入。
#
這就是droopsnoot評論的內容
數字格式化預設模式和建立
如Olivier在評論中提醒的那樣,預設模式是半偶數舍入,也稱為銀行家舍入。
同時,他們指出使用類別常數NumberFormatter::CURRENCY會“更規範”,而不是使用魔術數字2
這將使您的程式碼更好地進行通信,否則數字2可能會被解讀為數字的位數或精度,但在這種情況下並非如此。您可以在PHP手冊中找到所有的樣式常數。
備註:這不只是PHP特有的問題,當您將這些數字傳遞給Javascript並且需要在Javascript中對它們進行格式化時,您會遇到相同的問題。