Округление Механизма к ближайшим 0.05

Кто-то заявления, что Apple сказала им , это не поддерживается в SDK.

9
задан murgatroid99 24 August 2011 в 18:35
поделиться

7 ответов

используйте эту функцию

function rndfunc($x){
  return round($x * 2, 1) / 2;
}
14
ответ дан 4 December 2019 в 10:32
поделиться

Концептуально процедуру можно выполнить следующим образом:

  1. Разделить на 0,05
    • или умножить на (1 / 0,05)
  2. Округлить до ближайшего целого
  3. Умножить на 0,05
5
ответ дан 4 December 2019 в 10:32
поделиться

Вы в основном хотите отображать значения в сетку. Сетка определяется как , кратное 0,05 . В общем, вам нужно найти множители, между которыми находится ваше значение.

То, что не в таблице, - это отрицательные числа. Вам нужно решить, округлять ли от нуля (симметрично) или всегда в одном направлении (т.е. положительно).

код:

$step = .05;
$multiplicand = floor( $value / $step );
$rest = $value % $step ;
if( $rest > $step/2 ) $multiplicand++; // round up if needed
$roundedvalue = $step*$multiplicand;
1
ответ дан 4 December 2019 в 10:32
поделиться

Умножьте на два, затем округлите, затем разделите на два.

0
ответ дан 4 December 2019 в 10:32
поделиться

Подсказка: -

$ input1 = 24,05;

$ things = abs ($ input * 20); // 481 ".05" с

$ tenpcnt = abs ($ things / 10); // 48 ".05" с

$ ouput = $ tenpcnt / 20;

echo $ ouput; // 2.40

0
ответ дан 4 December 2019 в 10:32
поделиться
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";
0
ответ дан 4 December 2019 в 10:32
поделиться

Я уверен, что есть более элегантные решения, но, похоже, это соответствует задаче:

<?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;
}
0
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: