2016-06-17 15 views
0

なぜ2 + 10 = 122 + 010 = 10?私はのGoogle Chrome v 51.0IE 8のコンソールでこれを試してみましたが、同じ結果が得られました。たぶんこれはJavascriptの機能です。
誰かが私の背後にある論理を理解し、役立つ可能性があることを理解するのを手伝ってください。Wierd Javascriptの追加動作

+0

'' use strict''に最も適していなければ、数値の前に '0'があると8進数になります。 – elclanrs

+0

あなたの答えは次のとおりです:http://stackoverflow.com/questions/6718102/in-javascript-eval010-returns-8 – sohel101091

答えて

2

いつかJavaScriptの扱い番号正確あなたがそれらを指定すると、それはしようとする他の回数字を解釈する。

この場合、JavaScriptは数字を解釈しています。

先行ゼロ

は数8進数であることを意味する - ベース8 - 桁が0、1、2、3、4、5、6、7

だから.. 010(8進数)に行きます== 8(10進数)

2 + 010 
2 + 8 
10 

あなたは外部ソースからの数字を扱っている場合、あなたはparseInt

2 + parseInt("010", 10); 

注使用することができます。,10のように翻訳するその数を強制することも重要であるがベース 10. ES3(そして私は5と信じています)では、ブラウザーによって別の結果が得られるかもしれません。

2

0前にある数字は、javascriptに数字を8進数として解釈するように指示します。したがって、8進数で10は小数点で8を意味し、8 + 210です。

2

先頭に0が付いている数字は、8進数とみなされます。それで010は8と解釈され、したがって2 + 010の合計として10が得られます。これはPythonでも発生します。

1

10は8進数で8に等しく、最初のゼロはjavascriptに8進数として解釈させます。したがって、2 + 010が実行されると、最初に0108に変換され、2に追加されて10となります。

関連する問題