在 JavaScript 中直接输出 0.1 + 0.2 结果是 0.30000000000000004。
原因如下:
JavaScript 使用 Number类型表示数字(整数和浮点数),计算机遵循IEEE 754标准,所有语言都会有这个问题。
通常用64位来表示一个数字:
第0位:符号位,0表示正数,1表示负数(s);
第1位到第11位:储存指数部分(e);
第12位到第63位:储存小数部分(即有效数字)f。
十进制转换为二进制方法是,小数本身乘以2,取整数位作为二进制表示位,然后取其小数位参与计算(乘以2),如此循环往复,只至小数位乘以2的结果为零。
结果0.1和0.2的二进制,后面无限循环多余的数将会按一定规则进行舍入,最后只保留52位,将两个二进制数相加。
0.1的二进制:0.0 0011 0011 0011 0011...(无限循环) 0.2的二进制:0.0011 0011 0011 0011...(无限循环)
解决办法:化浮为整
浮点数的计算会出现这个问题,但是整数的计算就不会出现啊,把俩个小数换算为整数进行计算,再除以一个共同的倍数
var a = 0.1; var b = 0.2; a = a *10; b = b *10; var c = (a + b)/10;
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。