7

java中双值乘法运算符的保证精度是多少?

例如,2.2 * 100 是 220.00000000000003,但 220 是双精度数。220.000000000000003 是 220 之后的下一个双倍。

4

3 回答 3

7

乘法工作正常,但2.2不能完全表示为双精度数。最接近的双打是:

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

某些软件会将后一个值打印为2.2,但这并不意味着它是准确的。这只是意味着它被视为“足够接近”。

于 2011-06-23T19:10:00.600 回答
3

如果您正在使用财务数据,请不要float or double只使用java.math.BigDecimal

于 2011-06-23T19:09:48.013 回答
2

您可以使用 BigDecimal,但请确保使用BigDecimal(String)而不是BigDecimal(double)的构造。它们之间的区别是:

在此处输入图像描述

于 2017-07-25T02:12:16.123 回答