[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нестандартное округление
Herundinea
Здравствуйте! Нужна помощь вот в каком вопросе:
Необходимо написать функцию немного нестандартного округления чисел. Суть такова что при введении числа от 1 до 50 должно выдавать 2 ближайших значения округленных до 5. Например при вводе 12 должно вернуть 10 и 15, при вводе 45,666 должно вернуть 45 и 50 и.т.д. Задумывался о конструкции из кучи if- else, но тогда, на мой взгляд, код становится очень громоздким и плохо читается. Подскажите, у кого какие соображения по этому поводу? Гугление по данному вопросу никаких конкретных результатов не дало, поиск по данному форуму тоже.



Спустя 24 минуты, 2 секунды (12.01.2011 - 09:21) Michael написал(а):
от исходного числа стартуй циклы в оба направления и проверяй промежуточные варианты оператором %.

Спустя 14 минут, 30 секунд (12.01.2011 - 09:36) linker написал(а):
Чего-то я не догнал, если понятно что должно получится при 45,666, то совсем не понятно почему при вводе 12, должно получится 10 и 15. Опиши свою логику.
<?php

$num = 45.666;
$leftnum = is_float($num) ? (integer)$num : $num - 1;
$rightnum = $leftnum + 5;

?>

Спустя 14 минут, 55 секунд (12.01.2011 - 09:50) Michael написал(а):
linker, тут он под "2 ближайших значения округленных до 5" имеет ввиду "кратных 5".

Спустя 7 минут, 37 секунд (12.01.2011 - 09:58) Herundinea написал(а):
Цитата (Michael @ 12.01.2011 - 06:50)
linker, тут он под "2 ближайших значения округленных до 5" имеет ввиду "кратных 5".

Совершенно верно, я неправильно выразился. По поводу логики- необходимо для математическо- физических вычислений по формуле которую придумывал не я. Необходимо взять из таблицы ближайшие к вводимому значения и на их основе проводить операции. По поводу цикла можно подробнее? Немного не догнал ввиду того что раньше редко использовал данные операторы...

Спустя 12 минут, 46 секунд (12.01.2011 - 10:11) linker написал(а):
Michael
Млин, вот никогда бы не додумался что "округление" в математике равно "кратности".
<?php

$num = 12;
$leftnum = (integer)$num - ((integer)$num % 5);
$rightnum = $leftnum + 5;

?>

Спустя 1 час, 21 минута, 39 секунд (12.01.2011 - 11:32) Herundinea написал(а):
linker
Ещё раз извиняюсь за неточность в описании проблемы. Огромное спасибо, помогло.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.