数値形式の比較

数値形式の文字列を比較する場合、それは整数として比較されます。by PHP Manual
PHPのsort関数は相当おかしいを見てjavascriptだとどうなんだろうと試してみた。

String型

bookmarklet

javascript: (function(){var s=["100", "0x64", "1e2", ".1E3"];for(var i=0,l=s.length;i<l;i++){alert("100" == s[i]);}})()

firebug

["100", "0x64", "1e2", ".1E3"].forEach(function(n){ console.log("100" == n) });

結果は、true, false, false, falseで期待通り。さすが!

Number型

bookmarklet

javascript: (function(){var s=[100, 0x64, 1e2, .1E3];for(var i=0,l=s.length;i<l;i++){alert(100 == s[i]);}})()

firebug

[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(100 == n) });

結果は、全部trueでした。
===(厳密比較)で見てもtrue。これは、型一緒だから当然か。


となると、10進数に限定したい場合は、こうか?

[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(/^[0-9]+$/.test(n) && 100 == n) });

全部trueでした。

[100, 0x64, 1e2, .1E3].forEach(function(n){ console.log(n.toString()) });

全部100でした。


数値は、受け取ったら直ぐに10進数に変換して処理してるのかな?
そもそも、数値を10進数以外で出力する方法あったっけ?