0

ラベル表示用の「いい数字」を作る機能をまとめました。この関数は、log10奇数を正規化するために使用します。残念ながら、log100 未満の数値は処理しませんが、 NAN を返します
今、私は のような「醜い」数を持っています、またはの-2.36ような最も近い素敵な数を取得する方法-2.3-2.0

それを関数に渡して後で2.36掛けるためにに変換すると、 ---> no go になります。-1-2.4nice-number > ugly-number

何か案は?

ナイス番号などを定義するためのリンク:
http://wiki.tcl.tk/16640
グラフ上の「ナイス」グリッド ライン間隔のアルゴリズムは、
最も近いナイス番号に丸められます

これが私のコードです:

function niceNum($range, $round) {
    // $exponent: exponent of range
    // $fraction: fractional part of range
    // $niceFraction: nice, rounded fraction  
    if ($range==0) return 0;

    $exponent = floor(log10($range));
    $fraction = $range / pow(10, $exponent);

    if ($round) {
        if ($fraction < 1.5)
            $niceFraction = 1;
        elseif ($fraction < 3)
            $niceFraction = 2;
        elseif ($fraction < 7)
            $niceFraction = 5;
        else
            $niceFraction = 10;
    } else {
        if ($fraction <= 1)
            $niceFraction = 1;
        elseif ($fraction <= 2)
            $niceFraction = 2;
        elseif ($fraction <= 5)
            $niceFraction = 5;
        else
            $niceFraction = 10;
    }
    return $niceFraction * pow(10, $exponent);
}
4

0 に答える 0