js 中有很多特殊的数字,例如:Number.MAX_SAFE_INTEGER,Number.MAX_VALUE,Number.MIN_VALUE,Infinite 等,大家知道是怎么推导出来的么?分别有什么意义么?
查了很多资料,写了这篇文章,分析了它们如何推导而来。
http://www.qiutianaimeili.com/html/page/2017/12/jpksnywepj.html
计算过程涉及到很多二进制的知识,原码,反码,补码,阶码,移码等,需要大家事先了解下。有什么问题大家也可以评论指正。
1
tomato3 2017-12-25 17:18:20 +08:00
支持~
fix: “ 其中 00001 存在小数位 - 2^3 中的 3+1023=1024,所以指数位为 10000000010 + 2^3 中的 3+1023=1026,所以指数位为 10000000010 ” |
2
qiutianaimeili OP @tomato3 多谢提醒,已经修正过来了。
|
3
mskf 2017-12-26 15:11:02 +08:00
问一下 lz,Number.EPSILON 是不是 js 中能够保证准确性的最小正数
|
4
qiutianaimeili OP @mskf 是的,两个变量相减的话,在 js 中能表现的小误差值为 2^-52 ( Number.EPSILON ),如果比它还小的话,js 里基本可以认为相等了。
|
5
qiutianaimeili OP @mskf 已经增加了 Number.EPSILON 的推导过程。
|
6
fcten 2017-12-26 16:30:25 +08:00
必须吐槽一下 js 不支持 64 位整数的问题,导致解析二进制协议麻烦无比……
PHP 都知道浮点数、整数内部分开表示,不愧是世界上最好的语言(#手动滑稽 |