V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
qiutianaimeili
V2EX  ›  分享创造

js 中的特殊数字

  •  
  •   qiutianaimeili · 2017-12-25 15:10:55 +08:00 · 2458 次点击
    这是一个创建于 2561 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    6 条回复    2017-12-26 16:30:25 +08:00
    tomato3
        1
    tomato3  
       2017-12-25 17:18:20 +08:00
    支持~

    fix:

    其中 00001 存在小数位
    - 2^3 中的 3+1023=1024,所以指数位为 10000000010
    + 2^3 中的 3+1023=1026,所以指数位为 10000000010
    qiutianaimeili
        2
    qiutianaimeili  
    OP
       2017-12-25 18:04:26 +08:00
    @tomato3 多谢提醒,已经修正过来了。
    mskf
        3
    mskf  
       2017-12-26 15:11:02 +08:00
    问一下 lz,Number.EPSILON 是不是 js 中能够保证准确性的最小正数
    qiutianaimeili
        4
    qiutianaimeili  
    OP
       2017-12-26 15:37:18 +08:00
    @mskf 是的,两个变量相减的话,在 js 中能表现的小误差值为 2^-52 ( Number.EPSILON ),如果比它还小的话,js 里基本可以认为相等了。
    qiutianaimeili
        5
    qiutianaimeili  
    OP
       2017-12-26 15:55:11 +08:00
    @mskf 已经增加了 Number.EPSILON 的推导过程。
    fcten
        6
    fcten  
       2017-12-26 16:30:25 +08:00
    必须吐槽一下 js 不支持 64 位整数的问题,导致解析二进制协议麻烦无比……
    PHP 都知道浮点数、整数内部分开表示,不愧是世界上最好的语言(#手动滑稽
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2683 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 07:43 · PVG 15:43 · LAX 23:43 · JFK 02:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.