2014-11-04 4 views
0

Что я хочу достичь, как это:Как Округление десятичного числа в PHP

10678.62 then round to 10679 <br/> 
10678.67 then round to 10679 <br/> 
10678.46 then round to 10678.5 <br/> 
10678.43 then 10678.43 

какие функции PHP Я использовал, чтобы получить его работу, как и выше, например? потому что, насколько я пробовал (раунд, потолок и т. д.), нужно установить, сколько цифр стоит за запятой.

логика

if .x1 x2 x3 xn (x1 is first number behind comma and so on) 
if x1 >= 5 then round to integer (ex: 10678.62 then result 10679) 
if x1 < 5 and x2 >=5 then x1 + 1 (ex: 10678.46 then result 10678.5) 
if x1 < 5 and xz < 5 then nothing rounded 9 (ex 10678.43 then 10678.43) 

так основно мы должны видеть, если x1 >= 5 затем округлая целым числом, но если x1 < 5 проверка следующий номер, если x2 >= 5 затем округляется до 1 номер за запятой, если нет, то вокруг, чтобы два числа за запятой

Любое решение будет очень оценено. рассматривает

+6

вы можете использовать круглые () или number_format ($ var, десятичные точки) и т. д. посмотрите руководство php для них – Dave

+0

Я не могу сработать, если есть шаблон для того, как эти числа округлены ... – lonesomeday

+0

'number_format' - это правильный путь, это как ответ. – Paul

ответ

0

Вам просто нужно сказать, сколько цифр это необходимо округлить:

$number = 10678.48; 
$pos = strpos($number, '.'); 
$len = strlen($number); 
$digits = substr($number, $pos+1, $len-$pos); 
if($digits<50){ 
    echo round($number,1); 
}else{ 
    echo round($number,0); 
} 
0

Если я правильно понял ваш вопрос, это должно работать для вас:

function formatRound($number) { 
    $decimal = (string) fmod($number, 1); 

    if ($decimal[2] >= 5) { 
     return round($number); 
    } 

    if ($decimal[2] < 5 && $decimal[3] >= 5) { 
     return round($number, 1); 
    } 

    if ($decimal[2] < 5 && $decimal[3] < 5) { 
     return $number; 
    } 
} 

var_dump(formatRound(10678.62)); 
var_dump(formatRound(10678.67)); 
var_dump(formatRound(10678.46)); 
var_dump(formatRound(10678.43)); 
Смежные вопросы