在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
为零。除此之外,事情的乘法方面还有溢出的可能性。