0

2 つの float 値を比較する必要があるキャッシュ レジスタを設計していますが、比較するたびにエラーが発生します。

たとえば。顧客が支払った金額が 60.36 で、発行された請求書が 30.24 の場合、差額は 30.120001 になります。floor 関数を使用して、小数点以下 2 桁に四捨五入してみました: floorf(diff*100+.5)/100; しかし、うまくいきません。

小数点以下を四捨五入してレジの設計に使用するにはどうすればよいですか??

4

1 に答える 1

7

金額を処理するためにバイナリ浮動小数点を使用しないでください。丸めと浮動小数点の不正確な性質に関係する多くの問題があります。0.1たとえば、として正確に表すことはできませんfloat

代わりに固定小数点演算を使用してください。

于 2013-04-10T07:09:01.527 に答える