PHP の通貨形式の問題を修正
P粉322319601
P粉322319601 2023-08-08 22:10:55
0
1
680
<p><code>numfmt_format_currency(new NumberFormatter('en',2), 31.005, "USD")</code> このコードは $31.00 を出力します。しかし、$31.01 が出力されるはずです。この問題を解決するにはどうすればよいですか?このコードは $31.00 を出力します。ただし、$31.01 が出力されるはずです。この問題をどうやって解決すればいいでしょうか? ? </p><p>PHP は、価格形式の 0.005 から 0.01 への変換を無視します。 </p><p>Magento の通貨形式の問題を解決しようとしましたが、PHP に問題が見つかりました</p><p><br /></p>
P粉322319601
P粉322319601

全員に返信(1)
P粉275883973

31.005 は実際には 2 つの数値の間にあります。https://php.net/float で浮動小数点の精度を参照してください。

リーリー

(PHP やその他の言語では、31.005..という数字はありません)

表示要件に合わせて、十分な精度で、できるだけ誤差を少なくした数値を指定する必要があります。これは、丸めモードを指定することで実現できます。たとえば、31.005 を 31.01 に丸める場合は、切り上げまたは切り捨てを選択できます。

リーリー

これはdroopsnootのコメントです

数値書式設定のデフォルトモードと作成

Olivier がコメントで思い出したように、デフォルトのモードは半偶数丸めであり、バンカーの丸めとも呼ばれます。

同時に、彼らは、マジックナンバー 2

を使用する代わりに、クラス定数 NumberFormatter::CURRENCY を使用する方が「より正式」であると指摘しました。 ## リーリー

これにより、コードの通信が向上します。そうでないと、数値 2 が桁数または精度として解釈される可能性がありますが、この場合は当てはまりません。すべてのスタイル定数は PHP マニュアルで見つけることができます。

注: これは PHP 固有の問題だけではありません。これらの数値を Javascript に渡し、JavaScript でフォーマットする必要がある場合にも同じ問題が発生します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート