Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как округлить. [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо