我的印象是數值存儲爲浮點。用其他語言比較花車的平等是不可靠的,不推薦。是否有幕後的一些魔法讓這項工作可靠地工作,否則將會是整數?我找不到任何其他參考。在JavaScript中比較數值
回答
你對JS中的數字是浮點數是正確的。語言規範的4.3.19段說
012對應於雙精度64位的二進制格式的IEEE 754值Number值
原始值。
整數的浮點比較工作得很好。 64b IEEE-754可以準確地表示任何大小小於2至53rd的整數(見ULP)。分割時出現問題,或使用必須近似結果的函數Math
。
如果您確實需要將浮點運算的結果強制爲最接近的整數,請使用Math.round
。
"What Every Computer Scientist Should Know about Floating Point"對舍入誤差有很好的討論。
如果您知道您要比較的數字是整數,那麼你最好將它們轉換爲整數(例如,如果它們是作爲字符串,然後使用parseInt(value)
),然後比較它們作爲整數本身。
魔術:parseInt(5) === 5; // true
ECMAScript中有下列數據類型:未定義,空,布爾, 字符串,數字和對象。 (TODO:解釋ECMAScript的類型系統 - 見 也部分X - 類型: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/PDF/all.pdf 和http://c2.com/cgi/wiki?CategoryLanguageTyping)
ECMAScript的數字是64位二進制浮點數字。 (有關 的詳細信息,請參閱 [ECMA-262])。 SpiderMonkey使用(type-)標記的數據值 值。整數∈[-2 ^(wordsize-1-1),2 ^(wordsize-1-1 [可以將 直接存儲在jsval中(位移和標記)。其他ECMAScript號碼 以間接雙精度浮點 - 點號( jsval存儲標記的指針雙)。整數∈[-2^53,2^53] 可以精確地存儲在雙。1
[1]
What Every Computer Scientist Should Know About Floating-Point Arithmetic (edited version)
問題是,它不能代表某些整數,其量太大,
爲整數,[-9007199254740992,9007199254740992(2^53)可以準確度的可接受範圍。
- 1. 比較javascript數組值
- 2. 如何比較值在JavaScript
- 3. 幫助比較JavaScript中的數組值
- 4. 的Javascript比較值=== +價值
- 5. 在scriplet和javascript中比較變量值
- 6. 在SQL比較中比較空值
- 7. 數值比較
- 8. 比較在JavaScript
- 9. 比較在JavaScript
- 10. 比較在JavaScript
- 11. JavaScript中的數組比較
- 12. 將數組中的值與javascript中的數值比較
- 13. 比較javascript數組
- 14. javascript比較數組
- 15. 比較運算符在javascript中的數組上比較什麼?
- 16. 的Javascript比較值2個數組
- 17. javascript - 字符串和數值比較
- 18. Javascript/jQuery比較數組輸入值
- 19. JavaScript比較3個值
- 20. Javascript價值比較解釋
- 21. JavaScript比較兩個值
- 22. Javascript比較行結束值
- 23. Javascript來比較價值
- 24. Javascript比較布爾值
- 25. 在javascript中比較數組錯誤
- 26. 在Javascript中比較大數字
- 27. 在JavaScript中比較多維數組
- 28. 在JavaScript中比較兩個函數
- 29. 在javascript中比較函數指針
- 30. 比較數組中的值
JavaScript沒有整數和浮點數的單獨類型。整數是數字。浮點數字也是'數字'。 – icktoofay
我明白,但你可以把它們當作'int' – Saket