我有一個字符串值'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