码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript数字精度丢失问题总结

时间:2017-10-23 00:55:24      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:div   tin   target   问题总结   导致   asc   ima   rip   大整数   

  本文分为三个部分:

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数字精度丢失问题总结

标签:div   tin   target   问题总结   导致   asc   ima   rip   大整数   

原文地址:http://www.cnblogs.com/goloving/p/7712742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!