0

我整理了一个函数来创建“漂亮的数字”来显示标签。该函数log10用于规范化奇数。不幸的是,log10不处理数字 < 0 但返回 NAN
现在,我有一个“丑陋”的数字,例如-2.36,如何获得最近的好数字,例如-2.3-2.0

如果我将其转换为2.36以便通过函数并将其乘以-1之后,我会得到-2.4---> 不行,因为它是必需的nice-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