2016-09-10 3 views
0
  • Я хочу округлить значение с помощью 0 или 5 в соответствии с приведенными ниже условиями. Например:Округление значения 0 и 5

    160.1 to 162.5 ---> 160 (value expected) 
    162.6 to 167.5 ---> 165 (value expected) 
    167.6 to 169.9 ---> 170 (value expected) 
    
  • Ниже приведен код, который я пытался со сценарием:


$main_value=3831.25; 
if(is_int($main_value)) 
{ 
$main_value=number_format($main_value,1); 
} 

$arr = explode(".", $main_value); 
$firstvalue=substr($arr['0'],-1); 
$secoundvalue=substr($arr['1'],0,1); 
//echo "<pr>";print_r($firstvalue.$secoundvalue);exit; 
$default=$firstvalue.$secoundvalue; 
//echo "<pr>";print_r($default);exit; 
if($default>=1 && $default<=25){ 
    echo $output=$main_value-($default/10); 
}elseif ($default>25 && $default<=50) { 
    $temp_val=50-$default; 
    echo $output=$main_value+($temp_val/10); 
}elseif($default>50 && $default<=75){ 
    $temp_val=$default-50; 
    echo $output=$main_value-($temp_val/10); 
}else{ 
    $temp_val=100-$default; 
    echo $output=$main_value+($temp_val/10); 
} 
  • Но выход я совпавшая по 3830.05. Есть ли другой способ получить ожидаемый результат .
+0

Это то, что вы ищете HTTP: // stackoverflow.com/questions/4133859/round-up-to-nearest-multiple-of-five-in-php –

+0

нет 52 выходов 55 52 должно быть еще 50, что соответствует ожидаемому значению –

+0

ohk, тогда ответ @jeoren будет Помогите. –

ответ

5

Вы можете воспользоваться встроенной функцией round().

Вы можете сделать это, разделив его на 5, используя round() и умножив на 5 снова. Обратите внимание, что вам нужно округлить число в середине вниз, чтобы соответствовать вашим требованиям:

$rounded = round($number/5, 0, PHP_ROUND_HALF_DOWN) * 5; 

An example.

Редактировать: В javascript отсутствует параметр PHP_ROUND_HALF_DOWN, и все значения в середине округлены. Для того, чтобы получить тот же результат, вы можете округлить негативную версию числа - которая будет округлена вверх, в направлении 0 - и взять на себя негатив, что снова:

var rounded = -Math.round(-number/5) * 5; 
+0

Хороший ........ –

+0

@jeroen: не могли бы вы также помочь в jquery также, значит, вы можете дать код в jquery также –

+0

@sivashanker. Вы должны попробовать это самостоятельно. В чем проблема? – jeroen

Смежные вопросы