Показать сообщение отдельно
  #5  
Старый 20.06.2012, 02:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ОК.
Если у нас длинна цифры = 2, то округляем один разряд.
Если длинна цифры = 3, то округляем 2 разряда,
Если длинна цифры = 4, то округляем 3 разряда, и т.д.
Исключение - один разряд, всегда округляем до 10.
Соответсвенно, код будет выглядеть примерно так:
Код:
function RoundSpecial(N : Integer) : Integer;
var
  Buf : String;
begin
  Buf := IntToStr(Abs(N)); // Abs - убираем "-"
  If Length(Buf) = 1 
     Then Result := Sign(N) * 10 // Sign - возвращаем "-"
     Else Result := RoundTo(N,-1 * (Length(Buf)-1));
end;
Ответить с цитированием