console.log((1/7).toFixed(2),(1/7).toFixed(2)*100,0.07*100)
说明乘以100的时候会失精度。
其实JavsScript中,变量在存储时并不区分number和float类型,而是统一按float存储。而javascript使用IEEE 754-2008 标准定义的64bit浮点格式存储number,按照IEEE 754的定义: http://en.wikipedia.org/wiki/IEEE_754-2008 decimal64对应的整形部分长度为10,小数部分长度为16,所以默认的计算结果为“7.0000000000000001”,如最后一个小数为0,则取1作为有效数字标志。类似地,可以想像,1/3的结果应该是0.3333333333333333。
1.使用parseInt();
console.log((1/7).toFixed(2),parseInt((1/7).toFixed(2)*100),parseInt(0.07*100))
2.使用Math.round ();
onsole.log((1/7).toFixed(2),Math.round((1/7).toFixed(2)*100*100)/100,Math.round((0.07*100)*100)/100)