Java 整数与双倍乘法的结果非常奇怪

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 有人能告诉我为什么会出现这种奇怪的行为吗?你不能存储分数的实际十进制表示形式。 这是因为计算机使用二进

当我尝试将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

有人能告诉我为什么会出现这种奇怪的行为吗?

你不能存储分数的实际十进制表示形式。

这是因为计算机使用二进制来保存任何值,包括小数


因此,实际保存的分数与您要存储的分数之间存在一些差异。

您无法存储分数的实际十进制表示形式。

这是因为计算机使用二进制来保存任何值,包括小数


因此,在实际保存的一个和您想要存储的之间存在一些差异。

因为
double
存储在基数2中,而不是基数10中。..haha@ElliottFrischfind答案在这里。。。因为
double
存储在基数2中,而不是基数10..haha@ElliottFrischfind答案在这里。。。