Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизОчень срочно надо Найти похожие ветки
← →
Lumi (2001-12-27 10:31) [7]Если есчё нужно: Я использую такой вариант округления чисел с плавающей точкой:
function Degree(Num: Double; Deg: Integer): Double;
var
I: Integer;
Begin
if Num <> 0 then
begin
Result := 1;
if Deg < 0 then
for I := 1 to abs(Deg) do Result := Result / Num
else
for I := 1 to Deg do Result := Result * Num;
end
else
Result := 0;
end;
function RoundEx(Value: Double; ADecimal: Integer): Double;
var
I, D, tmp: Double;
begin
D := Degree(10, ADecimal);
if D <> 0 then
begin
I := Frac(Value) * D;
tmp := Frac(I);
I := Int(I);
if tmp >= 0.5 then I := I + 1;
if tmp <= -0.5 then I := I - 1;
Result := Int(Value) + I / D;
end
else
Result := Value;
end;
Кстати о вышеизложенном
1) преобразование в строки не стоит использовать (ненужная куча нагрузки)
2) Round - преобразует только в целые числа, если число больше чем maxInt, то Exeption
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c