61162833
V2EX  ›  问与答

JavaScript 如何正确显示一个大数字?

  •  
  •   61162833 · Nov 14, 2021 · 2872 views
    This topic created in 1645 days ago, the information mentioned may be changed or developed.
    var a = 123*1e20;

    打印 a 的值为:1.23e+22

    有没有可能得到一个 "12300000000000000000000" 的字串值?
    9 replies    2021-11-14 17:07:26 +08:00
    lemonnTr
        1
    lemonnTr  
       Nov 14, 2021
    BigInt 了解一下
    yuuko
        2
    yuuko  
       Nov 14, 2021   ❤️ 1
    (12300000000000000000000).toLocaleString('fullwide', {useGrouping:false})
    yuuko
        3
    yuuko  
       Nov 14, 2021
    toLocaleString 还是有位数限制的,大数建议还是用像一楼说的 BigNumber 之类的处理
    momomirage
        4
    momomirage  
       Nov 14, 2021
    这个数字已经远大于 Number.MAX_SAFE_INTEGER 了
    精确表示需要 BigInt 没有也可以字符串
    nlysh007
        5
    nlysh007  
       Nov 14, 2021   ❤️ 1
    BigInt(123)*BigInt(1e20)+""
    wanguorui123
        6
    wanguorui123  
       Nov 14, 2021
    Math.js
    61162833
        7
    61162833  
    OP
       Nov 14, 2021   ❤️ 1
    @yuuko 牛逼!感谢!

    我在 console 测试似乎 toLocaleString 没有位数限制?后面加了很多 0 还是可以正确显示
    runze
        8
    runze  
       Nov 14, 2021   ❤️ 1
    @61162833
    (12300000000000000000001).toLocaleString('fullwide', {useGrouping:false})
    MonikaCeng
        9
    MonikaCeng  
       Nov 14, 2021 via Android
    bn.js
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1056 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 18:11 · PVG 02:11 · LAX 11:11 · JFK 14:11
    ♥ Do have faith in what you're doing.