Как округлить значения в PHP

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

пример, как преобразовать его в круглое, как показано ниже:

803   --> 800 

791.5 --> 790

811   --> 810

845.7 --> 850

850.6 --> 860

900.5 --> 900

1016.9 --> 1020

person Nikhil Solanki    schedule 07.04.2015    source источник
comment
Вы искали в Google?   -  person Rizier123    schedule 07.04.2015
comment
Вы не округляете, вы округляете ... . за исключением 850.6 --> 860, который (обязательно) должен стать _2 _....., и ответ [здесь] (php.net/manual/en/function.round.php]   -  person Mark Baker    schedule 07.04.2015
comment
Что здесь округляется 803 --> 800 и 811 --> 810?   -  person Keep Coding    schedule 07.04.2015
comment
Ваше округление непоследовательно. Непонятно, о чем вы просите, потому что вы четко не описываете, как достигаются желаемые результаты.   -  person TZHX    schedule 07.04.2015
comment
Этот не совпадает с другими 850,6 - ›860 по шаблону.   -  person Funk Forty Niner    schedule 07.04.2015
comment
Какая логика в: 850.6 --> 860 900.5 --> 900? В этом нет никакого смысла по сравнению друг с другом.   -  person Loko    schedule 07.04.2015
comment
Пожалуйста, будьте ясны в своем шаблоне округления, это не имеет никакого смысла, как указал вышеупомянутый пользователь.   -  person Sulthan Allaudeen    schedule 07.04.2015


Ответы (3)


для 803-> 800 используйте круглый (803, -1), для 900,5-> 900 используйте пол (900,5).

для получения дополнительных примеров вам лучше взглянуть на http://php.net/manual/en/function.round.php

person Itamar    schedule 07.04.2015
comment
round(900.5) вернет 901. - person TZHX; 07.04.2015
comment
round(850.6,-1); вернет 850 ... - person Loko; 07.04.2015

Поскольку с примерами нет ничего общего, я сделаю их для вас 1 к 1:

echo floor(803/100)*100; --> 800

echo floor(791.5/10)*10; --> 790

echo floor(811/10)*10; --> 810

echo ceil(845.7/10)*10; --> 850

echo ceil(850.6/10)*10; --> 860

echo floor(900.5/100)*100; --> 900 // echo floor(900.5/10)*10 works as well

echo ceil(1016.9/10)*10; --> 1020

На всякий случай, если вы не поняли: Вы уменьшаете число, чтобы функция floor / ceil для получения правильного результата делила на 10 после использования функции floor / ceil, вы умножаете на 10.

person Loko    schedule 07.04.2015

Если вы хотите сделать это математически, вот как вы можете сделать следующее ...

845,7% 10 = 5,7 (напоминание)

пусть, вы хотите округлить до 900,5;

<?php
$value = round(900.5);
$roundedValue = 0;

if(($value % 10) > 5){ 
        $roundedValue = intval($value / 10) * 10 + 10 ; 
     }else{
         $roundedValue = intval($value / 10) * 10;
    }
    echo "The value is: ".$roundedValue;
?>

Тогда $ roundedValue - это то, что вам нужно! Надеюсь на эту помощь. Удачи.

person Imran    schedule 07.04.2015
comment
Вы получите синтаксическую ошибку;) - person Loko; 07.04.2015
comment
Упс, на самом деле я не серьезно отношусь к php, а к математической части. Кстати, теперь это должно работать. - person Imran; 07.04.2015