![]() |
![]() ![]() ![]() ![]() |
|
Округление в меньшую сторонуDelphi , Синтаксис , Математика
Автор: Dimka Maslov
{ **** UBPFD *********** by delphibase.endimus.com ****
>> «Округление» в меньшую сторону
Функция возвращает наибольшее число,
меньшее или равное Value, которое
без остатка делится на Divider
Зависимости: нет
Автор: Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright: Dimka Maslov
Дата: 20 мая 2002 г.
***************************************************** }
function RoundPrev(Value, Divider: Integer): Integer;
asm
mov ecx, edx
cdq
idiv ecx
imul ecx
end;
Пример использования: RoundPrev(10, 3) // = 9 RoundPrev(9, 3) // = 9 Программная функция для округления вниз до ближайшего кратного заданному делителю! Код структурирован и легко понятен. Вот разбивка: Подпись функции Функция принимает два целочисленных параметра: Ассемблерный код Это сердце функции. Ассемблерный код довольно изобретательен:
1. Пример использования Эти примеры демонстрируют, как функция работает. Например, при вызове Альтернативное решение
Если вы хотите реализовать эту функциональность без использования ассемблерного кода, можно использовать функцию Эта реализация более проста и легче поддерживаемая. Функция В целом, оригинальный код является хорошим примером использования ассемблерного кода для оптимизации конкретной алгоритма в Delphi. Однако для большинства случаев альтернативное решение с использованием Округление в меньшую сторону - функция, которая возвращает наибольшее число, меньше или равное Value, которое без остатка делится на Divider. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Математика ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||