将大型数字字符串转换为数字

4

我该如何将一个包含16位数字和2位小数的字符串转换为数字?

目前,当我尝试将Number('1234567890123456.12')转换时,结果会变成1234567890123456。小数部分会被省略。

我想确认一下,在不使用任何第三方库的情况下,是否可以将此字符串转换为数字?


数字函数会给出没有小数部分的结果,您想保留小数部分吗? - Muhammad Akber Khan
你的数字太大了,在JS中,约为9007199254740991是最高安全整数,而数字的存储方式,即使1234567890123456.12看起来更“小”,实际上它更“长”。 - adeneo
3个回答

6

很遗憾,不行。Javascript使用双精度浮点数表示数字。在16位数字的情况下,它只能够存储整数部分,而不能存储小数点后面的部分。您需要一个大数字库才能使用此值。

编辑:作为参考,在JavaScript中可以使用的最大整数是9,007,199,254,740,991。

编辑2:感谢Jeremy,您可以使用像bignumberJS这样的库。


2
...一个类似于bignumberJS的库 - Jeremy Thille

1
你的数字位数太多了,我已经创建了一个示例,在数组的第一个位置模拟了 javascript 中可能的最大长度。
var nums = [
    "12345678910111.12", 
    "1.5323",  
    "-42.7789"
];

nums.forEach(function(n) {
    console.log(parseFloat(n).toFixed(2));
});

https://jsfiddle.net/7zzz1qzt/


0

我曾经遇到过将18位数字字符串转换为数字的问题。在转换16位后,所有数字都变成了0。我尝试了下面的代码,对我来说非常有效。

[{"id":${id},"name":"${name}"}]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接