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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Округление дробных и целых чисел с избытком до ближайшего числа, кратного значению точности
thebeaver
Отправлено: 25 Октября, 2013 - 18:30:52
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




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



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




thebeaver пишет:
Аналога на php нет

Вот зачем врать если Вы даже не искали
http://us1.php.net/manual/ru/function.round.php
 
 Top
thebeaver
Отправлено: 25 Октября, 2013 - 18:38:43
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




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.
Если есть решение, приведите пример пожалуйста.
 
 Top
IllusionMH
Отправлено: 25 Октября, 2013 - 18:45:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




thebeaver, в официальной документации комментарии как на хабре — порой интересней содержимого Подмигивание

(Отредактировано автором: 25 Октября, 2013 - 18:45:53)

 
 Top
thebeaver
Отправлено: 25 Октября, 2013 - 18:46:01
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




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
 
 Top
biperch
Отправлено: 25 Октября, 2013 - 18:54:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




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. }
 
 Top
MAXUS
Отправлено: 25 Октября, 2013 - 18:55:56
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




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(ЧИСЛО/ШАГ)*ШАГ.

Например,
 
 Top
IllusionMH
Отправлено: 25 Октября, 2013 - 19:01:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




MAXUS, только round, а не ceil
 
 Top
biperch
Отправлено: 25 Октября, 2013 - 19:02:21
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




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
не то)
 
 Top
MAXUS
Отправлено: 25 Октября, 2013 - 19:02:49
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




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
не то)


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



Так попробуйУлыбка
 
 Top
IllusionMH
Отправлено: 25 Октября, 2013 - 19:06:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




MAXUS, прошу прощенья. del

(Отредактировано автором: 25 Октября, 2013 - 19:11:29)

 
 Top
biperch
Отправлено: 25 Октября, 2013 - 19:14:41
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




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
не то)


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



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


да на калькуляторе)))) и не разделил а умножил в чем и ошибся)
 
 Top
MAXUS
Отправлено: 25 Октября, 2013 - 19:14:59
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




IllusionMH пишет:
MAXUS, прошу прощенья. Пересмотрел примеры автора, там не округление до ближайшего кратного числа о котором он говорил, а округление строго вверх.


Да ладноУлыбка ЧоужУлыбка Совсем не смертельно. Со всеми бывает. Я твои посты регулярно вижу. Для меня очевидно, что в теме сечешь, поэтому см. п1Улыбка
 
 Top
thebeaver
Отправлено: 25 Октября, 2013 - 19:56:51
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2013  


Помог: 0 раз(а)




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(ЧИСЛО/ШАГ)*ШАГ.

Например,

Спасибо. Попробовал. Работает.
Всем хороших выходных
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB