Текущий архив: 2006.12.17;
Скачать: CL | DM;
ВнизОкругление Найти похожие ветки
← →
bablja © (2006-11-27 12:36) [0]Уважаемые , подскажите как округлить число до нужного разряда?
заранее благодарю
← →
alex810 © (2006-11-27 12:37) [1]Может это поможет
function RoundStr(Zn: Real; kol_zn: Integer): Real;
var
snl, s, s0, s1, s2: string;
n, n1: Real;
nn, i: Integer;
begin
s := FloatToStr(Zn);
if (Pos(",", s) > 0) and (Zn > 0) and
(Length(Copy(s, Pos(",", s) + 1, length(s))) > kol_zn) then
begin
s0 := Copy(s, 1, Pos(",", s) + kol_zn - 1);
s1 := Copy(s, 1, Pos(",", s) + kol_zn + 2);
s2 := Copy(s1, Pos(",", s1) + kol_zn, Length(s1));
n := StrToInt(s2) / 100;
nn := Round(n);
if nn >= 10 then
begin
snl := "0,";
for i := 1 to kol_zn - 1 do
snl := snl + "0";
snl := snl + "1";
n1 := StrToFloat(Copy(s, 1, Pos(",", s) + kol_zn)) + StrToFloat(snl);
s := FloatToStr(n1);
if Pos(",", s) > 0 then
s1 := Copy(s, 1, Pos(",", s) + kol_zn);
end
else
s1 := s0 + IntToStr(nn);
if s1[Length(s1)] = "," then
s1 := s1 + "0";
Result := StrToFloat(s1);
end
else
Result := Zn;
end;
или
function RoundEx(X: Double; Precision: Integer ): Double;
{
Precision :
1 - до целых
10 - до десятых
100 - до сотых
...
}
var
ScaledFractPart, Temp: Double;
begin
ScaledFractPart := Frac(X) * Precision;
Temp := Frac(ScaledFractPart);
ScaledFractPart := Int(ScaledFractPart);
if Temp >= 0.5 then
ScaledFractPart := ScaledFractPart + 1;
if Temp <= -0.5 then
ScaledFractPart := ScaledFractPart - 1;
RoundEx := Int(X) + ScaledFractPart / Precision;
end;
← →
Sam Stone © (2006-11-27 12:38) [2]RoundTo(). Лежит, кажется, в Math.
← →
Krants (2006-11-27 15:26) [3]
r:=1000; //разряд
...
round(a*r)/r
← →
DrPass © (2006-11-27 15:47) [4]
> alex810 © (27.11.06 12:37) [1]
> Может это поможет
Вряд ли...
Страницы: 1 вся ветка
Текущий архив: 2006.12.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.032 c