Accuracy of double precision multiplication in jav

2019-01-20 09:55发布

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

For example, 2.2 * 100 is 220.00000000000003, but 220 is a double number. 220.00000000000003 is the next double after 220.

3条回答
Viruses.
2楼-- · 2019-01-20 10:26

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

enter image description here

查看更多
兄弟一词,经得起流年.
3楼-- · 2019-01-20 10:43

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".

查看更多
够拽才男人
4楼-- · 2019-01-20 10:43

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

查看更多
登录 后发表回答