问题
当在计算价格或者其它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