V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
61162833
V2EX  ›  问与答

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

  •  
  •   61162833 · 2021-11-14 12:09:27 +08:00 · 1807 次点击
    这是一个创建于 884 天前的主题,其中的信息可能已经有所发展或是发生改变。
    var a = 123*1e20;

    打印 a 的值为:1.23e+22

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

    我在 console 测试似乎 toLocaleString 没有位数限制?后面加了很多 0 还是可以正确显示
    runze
        8
    runze  
       2021-11-14 15:51:06 +08:00   ❤️ 1
    @61162833
    (12300000000000000000001).toLocaleString('fullwide', {useGrouping:false})
    MonikaCeng
        9
    MonikaCeng  
       2021-11-14 17:07:26 +08:00 via Android
    bn.js
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3427 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:11 · PVG 20:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.