Forum Webscript.Ru

Программирование => PHP => Тема начата: strakhov от 17 Января 2008, 15:25:29

Название: Есть задачка по округлению чисел!
Отправлено: strakhov от 17 Января 2008, 15:25:29
Округление должно происходить следующим образом:

если вес больше ровного значения (1  1,5  2  2,5....) на сумму до 200 грамм, то округляется в меньшую сторону, если больше – то в большую. Кроме начального значения, которое не может быть менее 0,5(шаг веса 0,5 кг.).
 
 
Пример:                            реальный вес 0,1 => 0,5
                                               реальный вес 0,6 => 0,5
                                               реальный вес 0,7 => 0,5
                                               реальный вес 0,75 => 1
                                               реальный вес 2,2 => 2
                                               реальный вес 2,25 => 2,5  и т.д.

Помогите решить задачу с помощью PHP.
Заранее спасибо.
Название: Есть задачка по округлению чисел!
Отправлено: PHP'шкин от 17 Января 2008, 19:27:39
работает во всем диапазоне положительных чисел, вообще еще следовало бы сделать проверку на вводимые данные, но думаю автор сам справится
function kilogramm( $a) // :)
{
if (0.7>=$a) {
    $a=0.5;
   return $a;
}
elseif ( 1.2>=$a&&$a>0.7) {
       $a=1;
      return $a;
}
$b = floor( $a);
$c=fmod( $a, $b);
if ($c=<0.2) {
    return $b;
}
else if (0.7>=$c && $c>0.2) {
         $a=$b+0.5;
         return $a;
}
else {
        return ++$b;
}
}
Название: Есть задачка по округлению чисел!
Отправлено: Altaxar от 18 Января 2008, 16:58:39

function you_round($a){
return (int)($a*2+0.5)/2;
}

Так кажется - короче
Название: Есть задачка по округлению чисел!
Отправлено: PHP'шкин от 18 Января 2008, 18:16:08
2Altaxar
У вас округление до половины килограмма идет при дробных значения от 0.25 и до 0.75, а нужно, если я правильно понял, округлять до половины при дробных значениях >0.2 и =< 0.7.
Не работает в диапазоне от 0 до 0.25.