JavaScript 中 0.1 加 0.2 不等于 0.3 的原因和解决方法

在 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;


声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Node.js zlib 模块
WordPress 分类添加自定义字段
JavaScript 和 CSS 检测横屏适配
AIBOT 插件
如何使主题支持 Woocommerce
HTML input checkbox 复选按钮
wp_signon() 自定义用户登录函数
Express 使用 cookie-parser 处理 cookies