![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как реализовать обычное математическое округление [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;