2016-05-03 18 views
-2

var a = 123のような通常の数字の場合は、桁数(a.toString().length)を簡単にカウントできますが、var a = 00123の場合はどうなりますか? (まだ10進数であると仮定します)。先行ゼロの数字の桁数を取得する方法

+2

私が知る限り、 'a = 00123;は' a'に '123'を格納します。したがって、先行ゼロを失うだけです。 –

+4

実際、 'a = 00123'は' a'に '83'を格納します。 (これは8進定数です。)strictモードでないと、構文エラーです。 –

答えて

1

ここでは、可能な簡単な解決方法で発生する可能性があるいくつかの問題があります。先頭に0を付けた数値を最初に入力すると、予想とは異なる解釈が行われます。一般的には、10進数の形式ではなく、8進数または他のいくつかの基数を格納します。その値の長さを取得したいだけなら、文字列として格納する必要があります。

var a = '00123'; 
console.log(a.length); 

文字列として保存しないと、数字はおそらく小数点として格納されません。

これは簡単な解決策と共通のJavascriptの落とし穴です:ちょうどそのように、ベース、または '基数' を指定

parseInt('000123',10); // 123 

あなたはまた、ナンバーを使用することができます。

Number('000123'); // 123 
+0

ECMAScript 5でparseInt()を使用すると、先行ゼロの文字列は8進数として扱われません。 – rby

+1

あなたは絶対に正しいです、それは8笑ではありません –

関連する問題