JavaScript と DMonkey における Math.round() の動作の違い。
JavaScript …… round half up
- 小数部分が 0.5 より大きければ、次に大きい整数。
- 小数部分が 0.5 なら、次に大きい整数(↑と同じ)。
- 小数部分が 0.5 より小さければ、次に小さい整数。
DMonkey …… round half to even
- 小数部分が 0.5 より大きければ、次に大きい整数。
- 小数部分が 0.5 なら、最近接偶数への丸め。
- 小数部分が 0.5 より小さければ、次に小さい整数。
function r (n) {
alert ('Math.round (' + n + ') == ' + Math.round (n));
}
r (-2.5); // -2
r (-1.5); // -2
r (-0.5); // 0
r (+0.5); // 0
r (+1.5); // 2
r (+2.5); // 2
関連: DMonkey: Global.parseInt()
Global.parseInt() に number 型を渡した時も同じ丸め方になります。これらの挙動は Delphi の System.Round() を規定の丸めモード(rmNearest
)で呼び出しているためと思われます。