2014-11-22 46 views
-2

如果在JavaScript中使用11/10,則得到1.1。如果你在JavaScript中劃分011/10,你會得到0.9。什麼導致了結果的差異?在操作數上導致0會導致在使用Javascript時出現不同的結果

+0

你能解釋一下這種行爲,而不只是連接到錯誤。就像發生的一樣。爲什麼加零就是搞亂了數值...... – 2014-11-22 03:14:24

+1

那麼結果就是因爲八進制常量與浮點數沒有太大關係...... – 2014-11-22 03:56:57

+0

加一個前面的'0'表示一個八進制數。就像添加一個「0x」表示一個十六進制數字一樣。在其他語言如Java中,您甚至可以添加'0b',表示一個二進制數。這是大多數語言的常見功能。因此,「011/10 = 0.9」是完全正確的。 – 2014-11-22 04:04:58

回答

3

011是一個八進制常數等於9

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Integers

整數可以用十進制來表示(底爲10),十六進制(基數16),和八進制(基座8)

整數字面上的前導0(零)表示它是八進制的。八進制整數只能包含數字0-7。

還要注意:

八路整數文字是棄用和從被去除的ECMA-262,第3版標準(嚴格模式)。

C++也有八進制常量。

1

如果您處理的數字以字符串表示,則可以使用parseInt()指定將其轉換爲數字時所需的基數。

+'011' // 9 
parseInt('011') // 9 
parseInt('011', 10) // 11 
相關問題