JavaScriptでJIS丸め

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JavaScriptでJIS丸め

前回、ExcelでJIS丸め等々を実装したので、余勢を駆ってJavaScriptでも実装したのでメモ。

ECMAScriptの仕様書によると、JavaScriptのMath.floor(), Math.ceil(), Math.round()は負の無限大(-∞)や正の無限大(+∞)に丸める実装になっているので、ゼロに近づける一般的な切り捨て、ゼロから遠ざかる一般的な切り上げ、ゼロから遠ざける一般的な四捨五入もメモ。

JavaScriptの端数処理関数は全て小数点1桁を丸めて整数にする仕様になっているので、以下の実装もそれにならう。相互に依存もしていないので、個々別々に使用してもOK。

0.5を最近接偶数へ近づける (最近接偶数丸め; JIS丸め)

// round half to even
function roundToEven(n) {
    var r = (0 < n) ? n % 2 : (n % 2) + 2;
    return (1 < r) ?  Math.floor(n + 0.5) : Math.ceil(n - 0.5);
}

Excelでの実装とほぼ同じ。剰余演算子の仕様がExcelと少し違うので、式が少しだけ複雑。

0.5を無限大へ近づける (一般的な四捨五入; 0.5を0から遠ざける)

// round half away from zero
function roundTowardsInf(n) {
    return (0 < n) ?  Math.floor(n + 0.5) : Math.ceil(n - 0.5);
}

正数と負数で四捨五入の方向性を切り替えているだけ。

0への丸め (一般的な切り捨て)

// round towards zero
function floorTowardsZero(n) {
    return (0 < n) ?  Math.floor(n) : Math.ceil(n);
}

これも、正数と負数で端数処理の方向性を切り替えているだけ。

無限大への丸め (一般的な切り上げ; 0から遠ざける丸め)

// round away from zero
function ceilTowardsInf(n) {
    return (0 < n) ?  Math.ceil(n) : Math.floor(n);
}

これも、正数と負数で端数処理の方向性を切り替えているだけ。

スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/213-9b5e9d0b

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。