2012-03-13 117 views
3

當我嘗試將從php傳入的bigint轉換爲nodejs中的整數時,結果總是不一樣,我無法弄清楚它出了什麼問題。將字符串轉換爲數字,生成不同的數字

> var a = parseInt('135601920000000040', 10); 
undefined 
> a 
135601920000000030 
> var a = parseFloat('135601920000000040'); 
undefined 
> a 
135601920000000030 
> var n = Number('135601920000000040'); 
undefined 
> n 
135601920000000030 

不僅node.js的,它也發生在JS解釋在Firefox

+0

你試過不同的號碼還是隻有135601920000000040?如果你嘗試不同,結果是什麼?你能看到任何可能導致解決方案的模式嗎? – Chris 2012-03-13 10:01:31

+0

Fx太:http://jsfiddle.net/mplungjan/VqQDH/ – mplungjan 2012-03-13 10:03:19

回答

3

在javascript號碼類型被表示爲雙精度浮點數,因此,它傳遞給parseInt函數,parseFloat等的值是超過9007199254740992(ECMAScirpt Numbers specification),它被轉換爲適合數字類型。

+0

謝謝,我明白了。 javascript沒有64位整數,與php相同 – Leric 2012-03-13 10:35:53