Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2021, 16:05   #1
MixanMM
Форумчанин
 
Регистрация: 09.06.2009
Сообщений: 151
По умолчанию Округление при делении

Добрый день, подскажите, как правильно сделать округление меньшую сторону после деления, до первого знака после запятой? Т.е например 1000/26,5 = 37.73 округлить до 37,70, а если 2000/26,5 = 75.47, но мне нужно что бы было 75,40 а не 75,50 как делает RoundTo
MixanMM вне форума Ответить с цитированием
Старый 09.07.2021, 01:33   #2
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 156
По умолчанию

Если решать проблему в лоб, то можно сделать так: value:=trunc(1000/26.5*10)/10; то-есть умножить на 10 после деления, получить целочисленную часть, а затем разделить на 10 или менять RoundMode и использовать RoundTo:
Код:
 var
  OldRoundMode: TRoundingMode;
  value:Double;
begin
//...
  OldRoundMode:=GetRoundMode();
  SetRoundMode(rmDown);
  value:=RoundTo(1000/26.5,-1);
  SetRoundMode(OldRoundMode); // не забываем вернуть старый режим округления
//...
DIONISKA вне форума Ответить с цитированием
Старый 09.07.2021, 21:05   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 603
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Если решать проблему в лоб, то можно сделать так: value:=trunc(1000/26.5*10)/10; то-есть умножить на 10 после деления, получить целочисленную часть, а затем разделить на 10
Можно немного проще
Код:
x:=( (a*10) div b )/10.0
Kronos913 вне форума Ответить с цитированием
Старый 12.07.2021, 20:17   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Kronos913, но div сработает только с целыми.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.07.2021, 22:10   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Код:
function div_down(arg1,arg2: double) : double ;
begin
  Result := Trunc(arg1/arg2*10.0)/10.0
end;

Последний раз редактировалось digitalis; 12.07.2021 в 22:12.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при делении Archie_L Помощь студентам 2 02.12.2016 21:04
При делении на 0 пишет -1.#INF Tatyana64 Помощь студентам 1 04.11.2012 12:25
Ошибка при делении на 0 roxy7 Общие вопросы Delphi 3 25.05.2012 10:54
ошибка при делении на ноль.. vityanya Общие вопросы Delphi 2 13.01.2011 05:29
Переполнение при делении JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2010 14:04