查找小数范围内的所有数字

时间:2012-01-13 13:07:07

标签: php math

我有以下写的功能

 function range_gen($num1,$num2){


    $exp = explode('.',$num1);

    $accuracy = strlen($exp[1]);

    $dp = array(
    0=>1,
    1=>0.1,
    2=>0.01,
    3=>0.001,
    4=>0.0001);


    foreach ($dp as $key=>$acc)
    {
      if ($accuracy ==$key){
        $step = $acc;
      }
    }


      foreach (range($num1, $num2 ,$step) as $number) {
          $ans.= "\"".$number."\",";
      }
        echo trim($ans,",");
    }

如果我给它两个值,例如20.49和20.51那么结果是20.49,20.5,20.51

如何让20.5变为20.50?

由于 罗布

5 个答案:

答案 0 :(得分:3)

你没有“得到”20.5因为php会自动截断尾随小数0。但是,当您使用echo打印号码时,您可以对其进行格式化:

echo number_format($number, 2);

在循环中,可以这样做:

你可以这样:

foreach (range($num1, $num2 ,$step) as $number) {
      $ans.= "\"".number_format($number,2)."\",";
  }

答案 1 :(得分:3)

选项

number_format()

这是PHP number_format() DOCs函数的域。

echo number_format($number, 2);

使用循环代码的示例:

foreach (range($num1, $num2 ,$step) as $number) {
    $ans .= '"' . number_format($number,2) . '",';
}

的sprintf()

另一种选择是使用sprintf() DOCs

echo sprintf("%.2f", $number);

使用循环代码的示例:

foreach (range($num1, $num2 ,$step) as $number) {
    $ans .= '"' . sprintf("%.2f", $number) . '",';
}

我该怎么做

foreach (range($num1, $num2 ,$step) as $number) {
    $ans[] = number_format($number,2);
}
$ans = '"' . implode('", "', $ans) . '"';

答案 2 :(得分:0)

您应该查看sprintf()函数。

例:
$formatted = sprintf('%.2f', 2.5);

答案 3 :(得分:0)

试试这个:

string number_format ( float $number , int $decimals = 0 )

答案 4 :(得分:0)

像这样使用sprintf function

$x=20.5;
$str = sprintf("%.2f", $x);
var_dump($str);

<强>输出:

string(5)“20.50”