JavaScriptとJavaでは整数の割り算結果が違う

More than 3 years have passed since last update.

JavaScriptとJavaで整数の割り算の結果が異なることを知りました。てっきりJavaScriptでも小数未満切り捨てが行われるかと思っていました。


実験用ソースコード

// Javaで整数の割り算

public class Test {
public static void main(String[] args) {
System.out.println(54 / 10);
}
}
// => 5

// JavaScriptで整数の割り算

console.log(54 / 10);
// => 5.4


JavaScriptには整数型がない

Javaではlongやbyteやintなど様々な数値の型がありますが、JavaScriptでは数値の型はnumberのみ。これは小数も扱うそうです。そのため、Javaでは整数型同士の割り算の結果は整数型に格納されるため切り捨てが行われていましたが、JavaScriptでは整数型というのがないため今回のような現象が起きました。

Javaと同じような割り算を行いたいのならMath.floorを使います。

console.log(Math.floor(54 / 10));

// => 5

切り捨てには、ビット演算を使う方法もあります。(通りすがりさん、ありがとうございます。)

54 / 10 | 0