我该如何将一个包含16位数字和2位小数的字符串转换为数字?
目前,当我尝试将Number('1234567890123456.12')
转换时,结果会变成1234567890123456
。小数部分会被省略。
我想确认一下,在不使用任何第三方库的情况下,是否可以将此字符串转换为数字?
我该如何将一个包含16位数字和2位小数的字符串转换为数字?
目前,当我尝试将Number('1234567890123456.12')
转换时,结果会变成1234567890123456
。小数部分会被省略。
我想确认一下,在不使用任何第三方库的情况下,是否可以将此字符串转换为数字?
很遗憾,不行。Javascript使用双精度浮点数表示数字。在16位数字的情况下,它只能够存储整数部分,而不能存储小数点后面的部分。您需要一个大数字库才能使用此值。
编辑:作为参考,在JavaScript中可以使用的最大整数是9,007,199,254,740,991。
编辑2:感谢Jeremy,您可以使用像bignumberJS这样的库。
var nums = [
"12345678910111.12",
"1.5323",
"-42.7789"
];
nums.forEach(function(n) {
console.log(parseFloat(n).toFixed(2));
});
我曾经遇到过将18位数字字符串转换为数字的问题。在转换16位后,所有数字都变成了0。我尝试了下面的代码,对我来说非常有效。
[{"id":${id},"name":"${name}"}]
9007199254740991
是最高安全整数,而数字的存储方式,即使1234567890123456.12
看起来更“小”,实际上它更“长”。 - adeneo