【JavaScript】角度を16方位に変換するソースコード

JavaScript




概要

与えられたある角度を16方位に変換する。

よくありがちな処理としてこんなものがあります。

var dname = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW", "N"];
var dindex = Math.round( degree / 22.5 )

alert("方角は" + dname[dindex])

JSの場合、

IEEE754
というものがあり、浮動小数点数を利用した計算の場合、誤差が発生します。

なので、個人的には厳密な値を求める場合、浮動小数が含まれる計算はなるべく避けたいものです。

ソース

上記を考慮して、なるべく少数が含まれる計算を排除したのがこれ↓です。

function getAzimuth(degree) {
    var dname = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW", "N"];
    var count = 0
    for (var i = 11.25; i < (360 + 11.25); i += 22.5) {
        if (degree < i) {
            break
        }
        count++
    }
    return dname[count]
}