Найти все числа в диапазоне с десятичными знаками - PullRequest
1 голос
/ 13 января 2012

У меня есть следующая функция, которую я написал

 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?

Спасибо Rob

Ответы [ 5 ]

3 голосов
/ 13 января 2012

Вы не «получите» 20,5, потому что php будет автоматически обрезать конечные десятичные 0.Но, когда вы печатаете число с помощью echo, вы можете отформатировать его:

echo number_format($number, 2);

В вашем цикле это можно сделать так:

Вы можете получить что-то вроде этого:

foreach (range($num1, $num2 ,$step) as $number) {
      $ans.= "\"".number_format($number,2)."\",";
  }
3 голосов
/ 13 января 2012

Опции

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) . '"';
0 голосов
/ 13 января 2012

Используйте функцию sprintf , например:

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

ВЫХОД:

string (5) "20.50"

0 голосов
/ 13 января 2012

попробуйте это:

string number_format ( float $number , int $decimals = 0 )
0 голосов
/ 13 января 2012

Вам стоит взглянуть на функцию sprintf().

Пример:
$formatted = sprintf('%.2f', 2.5);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...