V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
qiutianaimeili

js 中的特殊数字

  •  
  •   qiutianaimeili · Dec 25, 2017 · 2802 views
    This topic created in 3047 days ago, the information mentioned may be changed or developed.

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

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

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

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

    6 replies    2017-12-26 16:30:25 +08:00
    tomato3
        1
    tomato3  
       Dec 25, 2017
    支持~

    fix:

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