![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как округлить Real [D5, NT4]
Tutov Roman © (2002-06-17 10:37:00)Хочется округлить с определенной точностью . Ну например 2 знака после запятой.
Tutov Roman (2002-06-17 14:34:00) [1]Большое СПАСИБО !!!!
Lord Warlock (2002-06-17 14:26:00) [2]А можно так:
function MyRound(x: Real; n: Integer): Real;
begin
try
Result:=StrToFloat(format("%8.*f",[n,x]));
except
Result:=0;
end;
end
Tutov Roman (2002-06-17 14:13:00) [3]2 AK-74
А что такое IntPover ?
Anatoly Podgoretsky (2002-06-17 12:56:00) [4]Tutov Roman (17.06.02 11:24)
Ну вопервых в этих случаях принято приводить код, а во второых и не должно получиться, число то с плавающей запятьй, имеетщее относительную точнось, ряд чисел представимы, а ряд нет, при том вторых большинство.
Например невозможно представить число 0.02 ни в одном из имеющих форматов, всегда будет 0.02 +- дельта
AK-74 (2002-06-17 12:52:00) [5]
function MyRound(n: Real; z: Integer): Real;
var
Mult: Extended;
begin
Mult := IntPower(10,z);
result := Int((n+0.5/Mult)*Mult)/Mult;
end;
Vovik (2002-06-17 12:03:00) [6]Попробуй FloatToStrF(..,..,..,) - параметры точно не помню, но в Help-e найдешь.
ZyreX (2002-06-17 11:48:00) [7]А у меня все вышло:
...
var
r: Real;
i: Integer;
begin
r := 123.456789;
i := Trunc(r * 100);
r := i / 100;
ShowMessage(FloatToStr(r));
end;
...
Black Cat (2002-06-17 11:35:00) [8]RoundTo
Tutov Roman (2002-06-17 11:24:00) [9]Сделал. ничего не изменилось
Kaban (2002-06-17 10:45:00) [10]умнож число на 100, выдели целую часть и подели на 100