Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Округление дробных и целых чисел
Форумы портала PHP.SU » » Вопросы новичков » Округление дробных и целых чисел

Страниц (1): [1]
 

1. thebeaver - 25 Октября, 2013 - 18:30:52 - перейти к сообщению
Здравствуйте. Подскажите пожалуйста в каком направлении искать решение задачи.
Например пользователь вводит в форму число 1,2 и его необходимо округлить до 1,5
Если пользователь вводит число 1,5 - число не округляется. Или если ввести число 1,6 ,то его необходимо округлить до значения 2.
В Excel есть функция округления с избытком до ближайшего числа, кратного значению точности - ОКРВВЕРХ . Аналога на php нет. Нашёл только округление в большую или меньшую сторону с заданной точностью
2. esterio - 25 Октября, 2013 - 18:32:29 - перейти к сообщению
thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php
3. thebeaver - 25 Октября, 2013 - 18:38:43 - перейти к сообщению
esterio пишет:
thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php


Смотрел round, ceil и т.п. там стандартное округление и кратности нет. А округлять необходимо с кратностью.
Приведу пример ещё раз - 1,2 - на выходе 1,5 , 1,3 - на выходе 1,5
1,5 - на выходе 1,5 , 1,6 - на выходе 2
2,1 - на выходе 2,5.
Если есть решение, приведите пример пожалуйста.
4. IllusionMH - 25 Октября, 2013 - 18:45:21 - перейти к сообщению
thebeaver, в официальной документации комментарии как на хабре — порой интересней содержимого Подмигивание
5. thebeaver - 25 Октября, 2013 - 18:46:01 - перейти к сообщению
thebeaver пишет:
esterio пишет:
thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php


Смотрел round, ceil и т.п. там стандартное округление и кратности нет. А округлять необходимо с кратностью.
Приведу пример ещё раз - 1,2 - на выходе 1,5 , 1,3 - на выходе 1,5
1,5 - на выходе 1,5 , 1,6 - на выходе 2
2,1 - на выходе 2,5.
Если есть решение, приведите пример пожалуйста.


echo round(3.5); // 4
В моём случае должно быть 3.5
6. biperch - 25 Октября, 2013 - 18:54:38 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function foo($x){
  2. $y = fmod($x, 1);
  3. if($y==0){
  4.  
  5. }elseif($y<=0.5){
  6.        $x = floor($x)+0.5;
  7. }elseif($y>0.5){
  8.        $x = floor($x)+1;
  9. }
  10. return $x;
  11. }
7. MAXUS - 25 Октября, 2013 - 18:55:56 - перейти к сообщению
thebeaver пишет:
esterio пишет:
thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php


Смотрел round, ceil и т.п. там стандартное округление и кратности нет. А округлять необходимо с кратностью.
Приведу пример ещё раз - 1,2 - на выходе 1,5 , 1,3 - на выходе 1,5
1,5 - на выходе 1,5 , 1,6 - на выходе 2
2,1 - на выходе 2,5.
Если есть решение, приведите пример пожалуйста.


В данном случае ceil(ЧИСЛО/ШАГ)*ШАГ.

Например,
8. IllusionMH - 25 Октября, 2013 - 19:01:07 - перейти к сообщению
MAXUS, только round, а не ceil
9. biperch - 25 Октября, 2013 - 19:02:21 - перейти к сообщению
MAXUS пишет:
Например,
PHP:
скопировать код в буфер обмена
 
ceil(1.2/0.5)*0.5;
ceil(1.6/0.5)*0.5;
 


ceil(1.2/0.5)*0.5=0.5
ceil(1.6/0.5)*0.5=0.5
не то)
10. MAXUS - 25 Октября, 2013 - 19:02:49 - перейти к сообщению
IllusionMH пишет:
MAXUS, только round, а не ceil


В данном случае ceil. Round 1.2 приведет к 1.
(Добавление)
biperch пишет:
MAXUS пишет:
Например,
PHP:
скопировать код в буфер обмена
 
ceil(1.2/0.5)*0.5;
ceil(1.6/0.5)*0.5;
 


ceil(1.2/0.5)*0.5=0.5
ceil(1.6/0.5)*0.5=0.5
не то)


На калькуляторе считал? Улыбка



Так попробуйУлыбка
11. IllusionMH - 25 Октября, 2013 - 19:06:41 - перейти к сообщению
MAXUS, прошу прощенья. del
12. biperch - 25 Октября, 2013 - 19:14:41 - перейти к сообщению
MAXUS пишет:
IllusionMH пишет:
MAXUS, только round, а не ceil


В данном случае ceil. Round 1.2 приведет к 1.
(Добавление)
biperch пишет:
MAXUS пишет:
Например,
PHP:
скопировать код в буфер обмена
 
ceil(1.2/0.5)*0.5;
ceil(1.6/0.5)*0.5;
 


ceil(1.2/0.5)*0.5=0.5
ceil(1.6/0.5)*0.5=0.5
не то)


На калькуляторе считал? Улыбка



Так попробуйУлыбка


да на калькуляторе)))) и не разделил а умножил в чем и ошибся)
13. MAXUS - 25 Октября, 2013 - 19:14:59 - перейти к сообщению
IllusionMH пишет:
MAXUS, прошу прощенья. Пересмотрел примеры автора, там не округление до ближайшего кратного числа о котором он говорил, а округление строго вверх.


Да ладноУлыбка ЧоужУлыбка Совсем не смертельно. Со всеми бывает. Я твои посты регулярно вижу. Для меня очевидно, что в теме сечешь, поэтому см. п1Улыбка
14. thebeaver - 25 Октября, 2013 - 19:56:51 - перейти к сообщению
MAXUS пишет:
thebeaver пишет:
esterio пишет:
thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php


Смотрел round, ceil и т.п. там стандартное округление и кратности нет. А округлять необходимо с кратностью.
Приведу пример ещё раз - 1,2 - на выходе 1,5 , 1,3 - на выходе 1,5
1,5 - на выходе 1,5 , 1,6 - на выходе 2
2,1 - на выходе 2,5.
Если есть решение, приведите пример пожалуйста.


В данном случае ceil(ЧИСЛО/ШАГ)*ШАГ.

Например,

Спасибо. Попробовал. Работает.
Всем хороших выходных

 

Powered by ExBB FM 1.0 RC1