在Java中,如果我们有一个如下所示的操作仅使用整数以及乘法和除法,由于精度下降,result是否可能不等于int3

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


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

谢谢。

最佳答案

您正在使用整数操作数执行除法运算,因此,是的,很可能会丢失信息。它与丢失精度完全相同,就像普通的浮点算术丢失精度一样,但是仍然是信息丢失。每次结果不是精确整数时都会执行此操作。

例如:

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

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


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

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

10-05 22:47