问题
当在计算价格或者其它number类型数据的时候,会发现有意想不到的情况
类似0.1+0.2=0.30000000000000004,而不是0.3
原因
在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。
十进制 0.1 转换为二进制为 0.00011001100110011…(循环0011)
十进制 0.2 转换为二进制为 0.0011001100110011…(循环0011)
所以两者相加结果为 0.01001100110011001100110011001100110011001100110011001100
转换成10进制之后得到:0.30000000000000004
解决办法
- Number(0.1+0.2).toFixed(2)
- (0.1x10+0.2x10)/10
本文探讨了在计算机中浮点数运算出现精度误差的原因,即二进制表示导致的不精确性,并举例0.1+0.2不等于0.3的现象。解决方法包括使用toFixed()方法来限制小数位数,以及特定的计算策略来避免直接的浮点数相加。
1697

被折叠的 条评论
为什么被折叠?



