我有一个字符串值'9223372036854775807'。我使用Number()函数在JavaScript中使用下面的代码防止JavaScript数字四舍五入大数字
var numericVal = Number(' 9223372036854775807 ');
将其转换为一个数值,当我在numericVal检查值,它是9223372036854776000.我怎样才能为代表的字符串等值数?
我有一个字符串值'9223372036854775807'。我使用Number()函数在JavaScript中使用下面的代码防止JavaScript数字四舍五入大数字
var numericVal = Number(' 9223372036854775807 ');
将其转换为一个数值,当我在numericVal检查值,它是9223372036854776000.我怎样才能为代表的字符串等值数?
JavaScript编号为Double Precision Floats;可以精确存储的最大整数是2^53(9007199254740992)。 如果你真的需要它在一个数字,你有一些有趣的数学在你面前,或者你可以使用库如big.js
我是相当困惑,因为输出的数字大于我给出的数字。如果它可以存储更大的价值,它不能存储更小的价值? – 2013-03-20 16:42:59
对不起,我错误粘贴 - 2^53是9007199254740992.它可以存储更高的值,只是不精确。 – 2013-03-20 16:44:56
但9223372036854776000大于9007199254740992的权利。这个值如何被存储? – 2013-03-20 16:49:17
这似乎是你的数字大于2^53,在javascript中最大的整数可以不失真地表示(见this question)。
如果你真的需要操作大的数字,你可以使用特殊的图书馆像这样的:https://github.com/peterolson/BigInteger.js
我只是想比较这个数字与另一个。这可能没有任何特殊的图书馆? – 2013-03-20 16:57:26
您可以比较表示大整数作为strings-
的整数更长的字符串是大串,否则按顺序比较字符。
可以排序整数字符串数组
function compareBigInts(a, b){
if(a.length== b.length) return a>b? 1:-1;
return a.length-b.length;
}
或返回的数字的更大的两串
function getBiggestBigInts(a, b){
if(a.length== b.length) return a>b? a:b;
return a.length>b.length? a: b;
}
//例子
var n1= '9223372036854775807', n2= '9223372056854775807',
n3= '9223',n2= '9223372056854775817',n4= '9223372056854775';
getBiggestBigInts(N1 ,n2); >> 9223372056854775807
[N1,N2,N3,N4]的.sort(compareBigInts); >>
9223
9223372056854775
9223372036854775807
9223372056854775817
只要确保你比较字符串。
(如果你用“ - ”负值,一个“大”的字符串值少)
顺便说一句,你那种大小数通过小数点分割和对比整数部分。如果整数长度相同并且相等,则查看小数部分。
http://stackoverflow.com/questions/1725341/javascript-large-number-library – 2013-03-20 16:38:07
我的值应为-9223372036854775808和9223372036854775807因此,我用下面的代码 范围之间'如果(valueToCompare.startsWith(' - ')){\t valueToCompare = valueToCompare.substring(1); \t isValid =!(valueToCompare> 9223372036854775808); \t }其他{\t isValid =!(valueToCompare> 9223372036854775807); \t }' – 2013-03-23 13:19:11
可能重复的[如何在javascript中处理大数](http://stackoverflow.com/questions/4288821/how-to-deal-with-big-numbers-in-javascript) – Bergi 2013-08-26 20:55:28