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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2011, 21:49   #1
Фаризочка
Пользователь
 
Регистрация: 06.06.2011
Сообщений: 12
По умолчанию Округление числа

ПРивет форуму! такая проблема надо округлить число если 17,4232 то 17 а если 17,896 то 18 здесь получается if использую или как?
Фаризочка вне форума Ответить с цитированием
Старый 12.06.2011, 21:55   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Это правила округления. Используй больше/равно.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 12.06.2011, 22:08   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

есть функция Round
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2011, 19:26   #4
Фаризочка
Пользователь
 
Регистрация: 06.06.2011
Сообщений: 12
По умолчанию

спасибо )))))
Фаризочка вне форума Ответить с цитированием
Старый 14.08.2011, 00:52   #5
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
Вопрос

Подниму тему, чтоб не плодить новых.

Есть число 100, если его округлять до сотых, то будет 100, но если запустить округление инвертированного числа -100, то программа выдает -99,99.
Пока разбирался написал для себя функцию исправляющую этот прикол жизни(см. ниже). Я прав или все же есть функция, которая в обычной человеческой логиче будет округлять?

Код:
function ExtSimpleRoundTo(const AValue: Double; const ADigit: TRoundToRange = -2):Double ;
var
  X,Y:Double;
  D,i:Integer;
begin
  X:=AValue;
  if X>=0 then
    math.SetRoundMode(rmUP)
  else
  begin
    {Пример: Чтобы -100, после прохождения функции не становилось -99,999}
    math.SetRoundMode(rmDown);
    D:=ADigit*-1;
    {Функция округляет в большую сторону, чтобы -100 округлить вверх и получить те же -100 надо прибавить 0,01 для случая округления до сотых}
    Y:=1;
    for i:=1 to D do
    begin
      Y:=Y*10;
    end;
    Y:=1/Y;
    X:=X-Y;
  end;
  Result:=Math.SimpleRoundTo(X,ADigit);
end;
gesper вне форума Ответить с цитированием
Старый 14.08.2011, 14:42   #6
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Для округления до указанного значения
Код:
RoundTo
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нежелательное округление числа НеВа6464 Microsoft Office Excel 15 08.01.2015 17:51
Округление числа Anubys Общие вопросы C/C++ 11 06.03.2011 16:28
Округление числа [C++] ordoss Помощь студентам 5 26.09.2010 21:35
Округление числа Foxx Microsoft Office Excel 13 07.04.2010 07:09
Округление числа Pinya Microsoft Office Excel 2 18.09.2008 18:01