分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS-Number 的精度

发布时间:2023-09-06 02:31责任编辑:赖小花关键词:暂无标签

JS 使用 IEEE 754 的双精度数表示数字,1 位符号,10 位指数,53 位底数。

所以 JS 数字精度近似为 15.95 位 10 进制(10 ** 15.95)。

也就是说整部加小数部分超过 15 位再用 Number 类型就不合适了,可以peterolson/BigInteger.js、rauschma/strint(有 bug,代码少可以用来学习)等库用字符串进行计算。

注:准确来说精度是2 ** 53 = 9007199254740992,超过这个值计算出来的数据就不准了,例如:

> 2 ** 539007199254740992> 2 ** 53 + 19007199254740992(false)> 2 ** 53 + 29007199254740994(true)> 2 ** 53 + 39007199254740996(false)

wiki 上的《IEEE 754 基本交换格式表》,binary64 就是 JS 中用的

NameCommon nameBaseSignificand Bits[b]/DigitsDecimal digitsExponent bitsDecimal E maxExponent bias[10]E minE maxNotes
binary16Half precision2113.3154.5124?1 = 15?14+15not basic
binary32Single precision2247.22838.2327?1 = 127?126+127
binary64Double precision25315.9511307.95210?1 = 1023?1022+1023

参考:

  • Working with large integers in JavaScript
  • IEEE 754 - Wikipedia

JS-Number 的精度

原文地址:https://www.cnblogs.com/jffun-blog/p/10327322.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved