js 中的特殊数字

2017-12-25 15:10:55 +08:00
 qiutianaimeili

js 中有很多特殊的数字,例如:Number.MAX_SAFE_INTEGER,Number.MAX_VALUE,Number.MIN_VALUE,Infinite 等,大家知道是怎么推导出来的么?分别有什么意义么?

查了很多资料,写了这篇文章,分析了它们如何推导而来。

http://www.qiutianaimeili.com/html/page/2017/12/jpksnywepj.html

计算过程涉及到很多二进制的知识,原码,反码,补码,阶码,移码等,需要大家事先了解下。有什么问题大家也可以评论指正。

2447 次点击
所在节点    分享创造
6 条回复
tomato3
2017-12-25 17:18:20 +08:00
支持~

fix:

其中 00001 存在小数位
- 2^3 中的 3+1023=1024,所以指数位为 10000000010
+ 2^3 中的 3+1023=1026,所以指数位为 10000000010
qiutianaimeili
2017-12-25 18:04:26 +08:00
@tomato3 多谢提醒,已经修正过来了。
mskf
2017-12-26 15:11:02 +08:00
问一下 lz,Number.EPSILON 是不是 js 中能够保证准确性的最小正数
qiutianaimeili
2017-12-26 15:37:18 +08:00
@mskf 是的,两个变量相减的话,在 js 中能表现的小误差值为 2^-52 ( Number.EPSILON ),如果比它还小的话,js 里基本可以认为相等了。
qiutianaimeili
2017-12-26 15:55:11 +08:00
@mskf 已经增加了 Number.EPSILON 的推导过程。
fcten
2017-12-26 16:30:25 +08:00
必须吐槽一下 js 不支持 64 位整数的问题,导致解析二进制协议麻烦无比……
PHP 都知道浮点数、整数内部分开表示,不愧是世界上最好的语言(#手动滑稽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX