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

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

Как реализовать обычное математическое округление [D6, WinXP]


zorik ©   (2005-10-21 11:11:00) 

Ф-ция Round округливает:
1.5=2
2.5=2
3.5=4
4.5=4
5.5=6
6.5=6
Если ли функция какая "нормально" округливает? Или надо писать свою?
Спасибо.


111_   (2005-10-21 15:00:00) [1]

Она не округливает а округляет.


Lexer   (2005-10-21 15:00:00) [2]

>нечетное, тогда округляем до большего, а если четное, тогда -  до меньшего.

неужто?
ты где такое вычитал?


Sergey_R   (2005-10-21 14:21:00) [3]

Вообще-то по правилам математики при округлении (если дробная часть заканчивается на 5) надо смотреть предыдущее число: если число нечетное, тогда округляем до большего, а если четное, тогда -  до меньшего.
Так что Round работает правильно!


Экспериментатор   (2005-10-21 13:48:00) [4]

в модуле Math стандартная функция RoundEx - один в один как MyRound у Baltika-12


ShiFT   (2005-10-21 12:48:00) [5]

int( X: Double)


zorik   (2005-10-21 12:24:00) [6]

Спасибо!
Но наверно должна быть и стандартная ф-ция.


Baltika-12   (2005-10-21 11:32:00) [7]

function MyRound(X:Double; N: Integer): Double;
var
 i,n1: Integer;
begin
 Result := X;
 n1 := 1;
 for i := 1 to N do n1 := n1*10;
 result := Trunc(Result*n1+0.5)/n1;
end;


Наверх

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