Какая есть функция для округления чисел???

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет! Склероз замучал :) Есть переменная типа Real в ней результат дробного числа 1.5472643347 надо округлить до сотых :) Именно округлить а не отрезать хвост :) Подскажите.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Код: Выделить всё

function Rounder(var Value: Double; Decimals: Integer): Double;
 var
   j: Integer;
   A: Double;
 begin
   A := 1;
   case Decimals of
     0: A := 1;
     1: A := 10;
     else
       for j := 1 to Decimals do
         A := A * 10;
   end;
   Result := Int((Value * A) + 0.5) / A;
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 var
   Value: Double;
 begin
   Value := 23.56784;
   //Result is 23.57 
  label1.Caption := FloatToStr(Rounder(Value, 2));
 end;
[/color]
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

если надо просто отобразить, то проще

Код: Выделить всё

label1.caption := Format('%.2f', [23.56784]);
Изображение
OTELLO
Сообщения: 59
Зарегистрирован: 11 дек 2004, 11:52
Откуда: Питеррр
Контактная информация:

А вообще функции есть вшитые

* Round- до ближайшего целого
* Trunc - в сторону нуля
* Ceil - в сторону увеличения
* Floor - в сторону уменьшения
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

ещё:
RoundTo(Что, сколько знаков после запятой)
С уважением, Lost Angel...
YurikGL
Сообщения: 142
Зарегистрирован: 16 фев 2005, 21:54
Откуда: Уфа
Контактная информация:

а еще можно
round(число*100)/100
Madshall
Сообщения: 19
Зарегистрирован: 21 июн 2006, 18:12

еще можно floattostrf(), а потом strtofloat() и все :D
Ответить