1

我有两个数字(对于这个例子,假设 695 是最小的,36000 是最大的)。目前,一旦我知道了最小值和最大值,我将差值除以 10,然后将其循环通过一个循环来创建范围。它看起来像这样:

$min = (int)$min-1;
$max = (int)$max;
$diff = ($max - $min) / 10;
$range = array();
for ( $i=1; $i<10; $i++){
  $range[] = array(
    "low"=>($i==1? $min: ($i*$diff) + $min),
    "high"=>($i+1)*$diff + $min
  );
}

当数字为 695-36000 时,这很有效。当数字接近时,有 10 个范围会变得有点麻烦。例如,最小值为 34000,最大值为 36000,范围为 34000-34200、34200-34400 等。

理想情况下,如果 695-36000 是 10 个不同的范围,那么 34000-36000 将是一个范围。

计算应该显示多少范围以及这些范围应该是什么的简单方法是什么?

4

1 回答 1

1

这里有一点需要考虑:

$diff = ($max - $min) / 10;
$range_max = 2000;
if($diff>$range_max) $range_size = $range_max;
else $range_size = $diff;
$creep = ($max-$min-$range_size)/9-$diff;

$range = array();
for($i=0; $i<10; $i++) {
  $range[] = array (
    'low'  => (int)(($diff+$creep)*$i+$min),
    'high' => (int)(($diff+$creep)*$i+$min+$range_size)
  );  
}
于 2012-07-10T17:02:10.037 回答