float sum=0;
for(int i=0;i<100;i++)
sum+=0.1;
System.out.print(sum);//10.000002
原因:计算机计算数字时,使用的是二进制,而十进制的0.1,无法用二进制精确表示,是一个二进制循环数,0.00011001100……(1100循环),而计算机对此二进制进行截取后,进行累加操作,必然会出现结果不对的情况。
float sum=0;
for(int i=0;i<100;i++)
sum+=0.1;
System.out.print(sum);//10.000002
原因:计算机计算数字时,使用的是二进制,而十进制的0.1,无法用二进制精确表示,是一个二进制循环数,0.00011001100……(1100循环),而计算机对此二进制进行截取后,进行累加操作,必然会出现结果不对的情况。