为什么大十进制会附加更多的十进制值

时间:2019-07-13 03:10:26

标签: java bigdecimal

非常基础的问题,我试图用值1.1初始化一个大十进制,当我打印它时,输出不完全是1.1

BigDecimal bd1 = new BigDecimal(1.1);
System.out.println(bd1);

输出为

  

1.100000000000000088817841970012523233890533447265625

当我使用“ 1.1”(作为字符串),或者尝试打印bd1.doubleValue()时,它会起作用

有人可以解释这种现象吗?这些额外的十进制数字是自动生成的。

1 个答案:

答案 0 :(得分:0)

这是因为您要使用的数字-1.1-是浮点数!作为浮点数,它不能精确地表示0.1-当表示为二进制数0.1时,尾巴将无限重复。查找浮点数的表示方式,这将是一个典型的例子。

以其他方式初始化,例如,用11然后除以10-您将得到想要的东西。

这里是one stack overflow answer among many,解释了float的这一属性。