ホームページ  >  に質問  >  本文

PHP の通貨形式の問題を修正

<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粉322319601P粉322319601408日前588

全員に返信(1)返信します

  • P粉275883973

    P粉2758839732023-08-09 10:40:33

    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
  • キャンセル返事