BACK
2016-03-08

Javaのzerofill数値は8進数

Javaで、
long hoge = 01000000000L;
としたら、134217728が入っていた。

ネットの海をさまよってみたら、0頭の数値は8進数と書いてあった。。。
16進数は0xとしてるのに、何故8は0だけにした! おのれえええ。

最初は0頭だとちゃんとlongにならないのかな、とか
いろいろ余計なことを調べてたら、恐ろしく時間がかかってしまった。
みなさんは気をつけてね。

ちなみに、Long.parseLong(String)は期待どおり?なので安心してほしい。
long hoge = Long.parseLong("01000000000"); //1000000000


なんだJavaの話か。。。と安心したそこのあなた。JavaScriptでこれやってみて。
var hoge = 011;
alert(home); //9
どうです、背筋がヒャーッとしてきたでしょう。。。

[追記]
やばい。
alert(018); //18
alert(017); //15
10進数っぽいのは10進数にしといたよ!

おいやめろ。

[さらに追記]
alert("018"*1); //18
alert("011"*1); //11
alert("0x11"*1); //17

ちょっと安心した。

BACK