我整理了一个函数来创建“漂亮的数字”来显示标签。该函数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);
}