Java 整数与双倍乘法的结果非常奇怪
当我尝试将3(整数类型)与112.1(双精度)相乘时,我得到的结果包含许多小数点Java 整数与双倍乘法的结果非常奇怪,java,groovy,Java,Groovy,当我尝试将3(整数类型)与112.1(双精度)相乘时,我得到的结果包含许多小数点 Integer a=3; Double b=112.1; Double result=a*b = 336.29999999999995 但当我们将2(整数)乘以112.1(双精度)时,小数点非常小 Integer a=2; Double b=112.1; Double result=a*b = 224.2 有人能告诉我为什么会出现这种奇怪的行为吗?你不能存储分数的实际十进制表示形式。 这是因为计算机使用二进
Integer a=3;
Double b=112.1;
Double result=a*b = 336.29999999999995
但当我们将2(整数)乘以112.1(双精度)时,小数点非常小
Integer a=2;
Double b=112.1;
Double result=a*b = 224.2
有人能告诉我为什么会出现这种奇怪的行为吗?你不能存储分数的实际十进制表示形式。 这是因为计算机使用二进制来保存任何值,包括小数
因此,实际保存的分数与您要存储的分数之间存在一些差异。您无法存储分数的实际十进制表示形式。 这是因为计算机使用二进制来保存任何值,包括小数
因此,在实际保存的一个和您想要存储的之间存在一些差异。因为
double
存储在基数2中,而不是基数10中。..haha@ElliottFrischfind答案在这里。。。因为double
存储在基数2中,而不是基数10..haha@ElliottFrischfind答案在这里。。。