开发者

Accuracy of double precision multiplication in java?

What is the guaranteed accuracy of multiplication operator for double values in java?

For example, 2.2 * 100 is 220.0000开发者_开发知识库0000000003, but 220 is a double number. 220.00000000000003 is the next double after 220.


The multiplication is working fine, but 2.2 cannot be represented exactly as a double. The closest doubles are:

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

Some software will print the latter value as 2.2, but that doesn't mean it's exact. It just means it's treated as "close enough".


If you are working with financials data dont use float or double just use java.math.BigDecimal


you can use BigDecimal, but make sure that you use the construct of BigDecimal(String) rather than BigDecimal(double). The difference between them is:

Accuracy of double precision multiplication in java?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜