在js中做一个乘法,把每一个数都乘以一个0.1,但是出来的结果有点出乎意料,写的方式如图:
求帮忙解释一下为什么33 34的结果会是这样
JS的数字类型只有number,数据全是已浮点方式存储的。所以无可避免的又误差。遇到这种,一般采用toFixed(2),来获取近似值。
float类型运算时是很容易出误差的。你可以*10把小数位弄没,再运算。然后/10弄回去
如果只是看看你举的例子,很好解释的:因为b=0.1; 1/b=10;所以33/10=3.3; 34/10=3.4;
不好解释的地方在于:为什么33*0.1=3.3000000000000003; 但是31*0.1=3.1;
就好象0.1+0.2=0.30000000000000004; 但是0.1+0.3=0.4;
按照我的理解应该都会产生很多小数的
我是这样理解的,float类型的,都是取近似值。实际上得到的是近似值。
你需要去看下数据的机内表示