![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как округлить. [D5, WinXP]
Executor © (2002-04-23 09:52:00)Как округлить число с плавающей точкой, до n знаков после запятой? Я знаю только один способ FormatFloat, но тогда придеться делать StrToFloat, что не очень здорово.
Johnmen (2002-04-23 11:24:00) [1]// Округление -------------------------
function JRound(X: double; Precision: integer = 100) : double;
{Precision : 1 - до целых, 10 - до десятых, 100 - до сотых, ...}
var ScaledFractPart, Temp : double;
begin;
ScaledFractPart:=Frac(X)*Precision;
Temp:=Frac(ScaledFractPart);
ScaledFractPart:=Int(ScaledFractPart);
if Temp>=0.49999999 then ScaledFractPart:=ScaledFractPart+1;
if Temp<=-0.49999999 then ScaledFractPart:=ScaledFractPart-1;
Result:=Int(X)+ScaledFractPart/Precision;
end;
Почти на все случаи...Основа взята давно из какого-то фака...
Andrey007 (2002-04-23 11:21:00) [2]Round(x*1000)/1000. В общем случае для n знаков надо умножать на 10 в степени n и, соответственно, делить на столько же.
masik (2002-04-23 09:54:00) [3]RoundTo