0%

精度丢失

Java中有两种浮点类型,float和double,都是以二进制的形式存储,是近似值。

进制转换

  • 对于整数而言,十进制转二进制,二进制转十进制都不会有问题。
  • 对于小数,十进制转二进制可能会存在精度丢失的问题。

BigDecimal

为了获取精确的值,需要使用BigDecimal。
错误使用如下:

1
2
new BigDecimal(1.1)
new BigDecimal(new Double("0.1"))

正确使用如下:

1
2
new BigDecimal("1.1")
BigDecimal.valueOf(new Double("0.1"))