Показать сообщение отдельно
  #3  
Старый 29.03.2009, 12:35
Аватар для Karsh
Karsh Karsh вне форума
Активный
 
Регистрация: 22.09.2007
Адрес: SPb
Сообщения: 228
Версия Delphi: 7, 2009, XE2
Репутация: 70
По умолчанию

Взято с decoding.narod.ru:
Код:
Как правильно округлять дробные числа?

// Precision = 1 - округлить до целых
// Precision = 10 - округлить до десятых
// Precision = 100 - округлить до сотых, и т.д.
function RoundEx( X: Double; Precision: Integer ): Double;
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;
__________________
Начинающий программист уверен, что в 1 килобайте 1000 байт.
Законченный программист уверен, что в 1 километре 1024 метра.
Ответить с цитированием