7

javaのdouble値に対する乗算演算子の保証精度はどれくらいですか?

たとえば、2.2 * 100 は 220.00000000000003 ですが、220 は倍数です。220.00000000000003 は 220 の次の double です。

4

3 に答える 3

7

乗算は正常に機能していますが2.2、double として正確に表すことはできません。最も近い double は次のとおりです。

  • 2.199999999999999733 (0x4001999999999999)
  • 2.200000000000000177 (0x400199999999999a)

一部のソフトウェアは後者の値を として出力しますが2.2、それが正確であることを意味するものではありません。それは単に「十分に近い」として扱われることを意味します。

于 2011-06-23T19:10:00.600 に答える
3

財務データを扱っている場合は、使用しないでくださいfloat or doublejava.math.BigDecimal

于 2011-06-23T19:09:48.013 に答える