偶尔会出现一些小误差,希望熟悉源代码的大神讲解一下
int n = 0;
while (n<10){
n++;
Random random = new Random();
double d = random.nextInt(1000);
d = d/100;
System.out.print(d+"||");
d += 1;
System.out.println(d);
}
.....你不是有个d+=1么? d = d+1,结果不就是只有吗?
解决方案就是使用整形数组做高精度的运算,或者转化为整形先运算,运算完后在转化,
由于浮点型在运算的结果是用二进制表示的 最接近的数,,所以有误差,,而且无法移除误差,例如无限循环的数1.666666666666666666666666
到了后面超出精度范围,就会表示为一个最接近的二进制数;
因为在运算过程中整数会被转化为DOUBLE类型, 例如1 可能会被转化成为 1.00001 然后就有可能出问题了
这个是系统运算导致的,你应该没有办法修改吧,你可以把d的每一位都记录下来,然后在对应整数位上+1