Кто-то заявления, что Apple сказала им , это не поддерживается в SDK.
используйте эту функцию
function rndfunc($x){
return round($x * 2, 1) / 2;
}
Концептуально процедуру можно выполнить следующим образом:
Вы в основном хотите отображать значения в сетку. Сетка определяется как , кратное 0,05
. В общем, вам нужно найти множители, между которыми находится ваше значение.
То, что не в таблице, - это отрицательные числа. Вам нужно решить, округлять ли от нуля (симметрично) или всегда в одном направлении (т.е. положительно).
код:
$step = .05;
$multiplicand = floor( $value / $step );
$rest = $value % $step ;
if( $rest > $step/2 ) $multiplicand++; // round up if needed
$roundedvalue = $step*$multiplicand;
Умножьте на два, затем округлите, затем разделите на два.
Подсказка: -
$ input1 = 24,05;
$ things = abs ($ input * 20); // 481 ".05" с
$ tenpcnt = abs ($ things / 10); // 48 ".05" с
$ ouput = $ tenpcnt / 20;
echo $ ouput; // 2.40
function round5Sen ($value) {
return number_format(round($value*20,0)/20,2,'.','');
}
echo round5Sen(155.13);
echo "\n";
echo round5Sen(155.12);
echo "\n";
echo round5Sen(155.0);
echo "\n";
echo round5Sen(155.18);
echo "\n";
Я уверен, что есть более элегантные решения, но, похоже, это соответствует задаче:
<?php
// setup test
$start_num = 89.90;
$iterations = 10;
// loop through test numbers
for ($i = 0; $i < $iterations; $i++) {
nickleRound($start_num + (0.01 * $i));
echo "\n\n";
}
//
function nickleRound($num) {
$p = 0.05;
echo "\n" . 'p= ' . $p;
$num = round($num, 2);
echo "\n" . 'num= ' . $num;
$r = ($num / $p);
echo "\n" . 'r= ' . $r;
$r2 = ceil($r) - $r;
echo "\n" . 'r2= ' . $r2;
$a = round($num, 1);
if (($r2 > 0) && ($r2 < 0.5)) {
$a = $a + 0.05;
}
echo "\n" . 'a= ' . $a;
}