Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中长整型字符串的转换问题_Javascript_Arrays_Numbers_Parseint - Fatal编程技术网

JavaScript中长整型字符串的转换问题

JavaScript中长整型字符串的转换问题,javascript,arrays,numbers,parseint,Javascript,Arrays,Numbers,Parseint,我正在尝试将一个只有整数的长字符串转换为数字 var strOne = '123456789123456789122'; parseInt(strOne, 10); // => 123456789123456800000 var strTwo = '1234567891234567891232'; parseInt(strTwo, 10); // => 1.234567891234568e+21 预期输出应与strOne和strTwo相同,但此处不发生这种情况。将字符串转换为数字

我正在尝试将一个只有整数的长字符串转换为数字

var strOne = '123456789123456789122';
parseInt(strOne, 10);
// => 123456789123456800000

var strTwo = '1234567891234567891232';
parseInt(strTwo, 10);
// => 1.234567891234568e+21
预期输出应与
strOne
strTwo
相同,但此处不发生这种情况。将字符串转换为数字时,
输出将发生更改


解决此问题的最佳方法是什么?

不幸的是,您的号码太大,转换完成后会被包装起来

您可以在JavaScript中表示的最大整数是
2^53-1
,它由
Number给出。MAX\u SAFE\u integer
,请参阅

这个数字背后的原因是JavaScript使用IEEE 754中指定的双精度浮点格式数字,并且只能安全地表示介于-(2^53-1)和2^53-1之间的数字

console.log(Number.MAX\u SAFE\u整数)现在在浏览器中可用

BigInt
是一个内置对象,提供了一种表示整体的方法 大于253的数字,这是JavaScript可以使用的最大数字 用数字原语可靠地表示

正在创建的对象的数值。可以是字符串或整数

var strOne='123456789123456789122';
var intOne=BigInt(strOne);
var strTwo='1234567891234567891232';
var intTwo=BigInt(strTwo);

console.log(intOne,intTwo)不幸的是,您的数字太长,无法放入JavaScript数字并被包装。但这并不意味着没有办法处理更大的数字numbers@NinaScholz . 另见@guest271314:我不知道为什么会对NinaSholz的评论做出这样的回应,他正确地指出有一些重要的浏览器不支持这一点。兼容性图表上也有同样的说明。@ScottSauyet对你来说“重要”吗?为什么?有一段时间没有使用过*indows或IE,也没有机会使用Edge一次。如果MS browser不支持有用的功能,谁会在乎呢。使用自由和开放源码软件浏览器。无论如何,请查看链接库。现在,如果这些库返回的结果与Edge中内置的
BigInt
不一样,那么您可以向MS提交一个问题,以解决该问题,并在Edge中实现
BigInt
。我自己不使用它们,因为Linux在家,Mac在工作。但我开发的应用程序仍然需要支持它们。IE和Edge的台式机总份额为14%,整体总份额为5%。我很高兴知道BigInt是如此广泛,但它离普遍存在还有一些距离。@guest271314:我想我们生活在不同的世界。我在一家向大型金融公司销售软件和服务的公司工作。不编写在其环境中工作的软件的供应商不会销售软件。他们中的许多人仍在使用IE11或Edge。