js小数的计算方法

2018-01-03  本文已影响0人  左左front

0.1+0.2===0.3为false的说明,下面是原因和解决方法。
因为计算机是二进制的,只能用0,1来表示数值,所以表示浮点数肯定是有误差的,下面我们来说明一下浮点数的别是过程。

文字描述该过程如下:将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘
以2,将得到的整数部分作为二进制表示的第2位;以此类推,直到小数部分为0。 
特殊情况: 小数部分出现循环,无法停止,则用有限的二进制位无法准确表示一个小数,这也是在编
程语言中表示小数会出现误差的原因

下面我们具体计算一下0.7的小数表示过程

0.7 * 2 = 1.4 ——————- 1 
0.4 * 2 = 0.8 ——————- 0 
0.8 * 2 = 1.6 ——————- 1 
0.6 * 2 = 1.2 ——————- 1 
0.2 * 2 = 0.4 ——————- 0 
…………

所以0.1+0.2=0.300000000000004。为了达到正确的结果,我们可以用toFixed()来处理。

parseFloat(1.392143).toFixed(2)=1.39

toFixed()里面填写需要展示的小数位数就可以了。

上一篇下一篇

猜你喜欢

热点阅读