【问题标题】:how to convert number to string (without exponent)如何将数字转换为字符串(没有指数)
【发布时间】:2011-04-15 03:05:46
【问题描述】:

对不起,但我不是那个数学人,所以我不知道它的真正名称:

数字12345678901234567890123 也可以表示为1.2345678901234567890123 * 10^22(如果我是对的并且没有遗漏任何小数...)

考虑一下这个javascript:

var number = 12345678901234567890123;
var stringValue = number.toString();

如果我这样做,它会呈现替代翻译(如上所述)。相反,我想呈现简单、朴素、... 12345678901234567890123

如何做到这一点?

编辑:
只是要清楚:我要渲染的数字不包含任何小数位。这只是一个简单的12345678901234567890123 ...不是12345678901234567890123.123 或类似的东西。而且,就像我使用 javascript 一样,typeofnumber

【问题讨论】:

  • 如果存储为浮点数,恐怕没有近似值就无法进行这样的转换。只是想把这个拿出来。
  • 是的,我明白了。只是如果在这种情况下 Javascript 使用 float 作为内部类型来存储此数字,则近似值已经发生,并且您的整数非常大的数字将转换为 float 或 double 中的近似值。 Double 可能仍然具有很高的准确性,但在 float 中,我可以保证您会损失或获得数十亿美元。尽管您要存储 10^22 大数。不要期望准确性,即使是双重的。我可以向你保证,如果 JS 将你的数字表示为 1.23445E+22,那么你就有了一个严重的近似值。
  • 您可能希望将您的评论转换为答案 - 它一针见血!

标签: javascript type-conversion


【解决方案1】:

如果您仍想处理 10^22 数量级的数字而不进行四舍五入,那么您应该使用 BigInt 类,该类实现任意大小的数字。您可以在网上找到几个 BigInt javascript 实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 2015-01-06
    • 2015-06-24
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多