まず整数について。
整数は普通に4バイトの-231 〜 231-1
で定義されていると思われます。
var a = 0x7FFFFFFF; //231-1 a--; //231-2 a++; //231-1 a++; //エラーエラーが出るのはバグかな? でもこんなことする人はいないでしょうね。
var a = -0x80000000; //-231 a--; //エラーところが、インクリメントじゃなくて加算ならできるんですね。
var a = 0x7FFFFFFF; a += 1; //231 a += 1; //231+1要するにインクリメント・デクリメントは整数のまま、 加算は8バイトの浮動小数点数に直して計算し、整数に直していると思われます。 いつか書くと思いますが、 それでインクリメント・デクリメントの方が動作が速いんですね。
次に浮動小数点数の表示について探ってみましょう。 すなわち toString メソッドを働かせたときに返ってくる文字列について調べます。
alert(0.000001) //0.000001 alert(0.000000999999) //9.99999e-7 //alertは自動的にtoStringメソッドを用いていると思われる1e-6以上なら小数表示、それより小さいときは指数表示なんですね。
alert(1e21); //1e+21 alert(9.999e20); //999900000000000000000ということで、1e21以上なら指数表示、 それより小さいときは整数あるいは小数表示になります。
alert(3.14159265358979323846); //3.141592653589793 alert(3.14159265358979323846e21); //3.141592653589793e+21