我整理了一个函数来创建用于显示标签的“漂亮数字”。该函数使用log10
来标准化奇数。不幸的是, log10
不处理数字< 0但返回NAN 。
现在,我有一个“丑陋”的数字,如-2.36
,如何获取最接近的好号码,例如-2.3
或-2.0
?
如果我将其转换为2.36
以便通过该函数将其转换为-1
之后,我会得到-2.4
--->不行,因为需要nice-number > ugly-number
。
有什么想法吗?
定义好数字等的链接:
http://wiki.tcl.tk/16640
Algorithm for "nice" grid line intervals on a graph
round to nearest nice number
这是我的代码:
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);
}