JavaScript数字精度丢失问题总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript数字精度丢失问题总结相关的知识,希望对你有一定的参考价值。
本文分为三个部分:
1、JS 数字精度丢失的一些典型问题
2、JS 数字精度丢失的原因
3、解决方案(一个对象+一个函数)
一、JS数字精度丢失的一些典型问题
1. 两个简单的浮点数相加
0.1 + 0.2 != 0.3 // true
看看Java的运算结果
2. 大整数运算
9999999999999999 == 10000000000000001 // true
var x = 9007199254740992
x + 1 == x // true
16位和17位数竟然相等;加1竟然也相等。
3. toFixed 不会四舍五入(Chrome)
1.335.toFixed(2) // 1.33
线上曾经发生过 Chrome 中价格和其它浏览器不一致,正是因为 toFixed 兼容性问题导致。
二、JS 数字丢失精度的原因
计算机的二进制实现和位数限制有些数无法有限表示。就像一些无理数不能有限表示,如 圆周率 3.1415926...,1.3333... 等。JS 遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit。如图
以上是关于JavaScript数字精度丢失问题总结的主要内容,如果未能解决你的问题,请参考以下文章