仅使用整数乘法和除法时是否可能会丢失精度?使用双打怎么样?

Is it possible to lose precision when only using multiplication and division of integers? How about using doubles?

在java中,如果我们有一个像下面这样只使用整数和乘法和除法的运算,是否有可能result由于丢失而不等于int3精度?

Int int1, int2, int3 = some values
Double result = ((((int1 / int2) * int3)/ int3)* int2)

编辑: 如果我们有 Double int1, int2, int3 = some values 怎么办?

谢谢。

您正在使用整数操作数执行除法,所以是的,这很可能会丢失信息。和普通浮点运算丢失精度一样,丢失precision是完全一样的,但仍然是信息丢失。每次结果不是精确整数时它都会执行。

例如:

int int1 = 1;
int int2 = 2;
int int3 = 3;

double result = (((int1 / int2) * int3) / int3) * int2;

... 给出零,因为 int1 / int2 是零。

除此之外,还有可能在事物的乘法方面溢出。

在 java 中,任何时候将一个整数除以另一个整数时,都会面临精度损失的风险。所以,对你的问题的简短回答是肯定的。本教程中有关整数除法的更多信息:http://mathbits.com/MathBits/Java/DataBasics/Mathoperators.htm