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

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

Вопрос про округление.


12345 ©   (2005-02-03 12:57:00) 

Есть три целых: x y z. Есть действительное число a.
Вопрос - насолько будут отличатся величины:
Round(ax)+Round(ay)+Round(az) от Round(ax+ay+az)?

Чувствую, что максимум на единицу, а доказать не могу. Кто-нибудь может?

Спасибо.


default   (2005-02-06 18:21:00) [1]

вот тут объяснение если кому интересно
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1107547412&n=3


default   (2005-02-04 21:27:00) [2]

а нафиг так сделано?
такая фигня происходит потому что там FISTP используется, а не FRNDINT


begin...end   (2005-02-04 21:17:00) [3]

> [6] default ©   (04.02.05 21:03)

Из хелпа:

If X is exactly halfway between two whole numbers, the result is always the even number. This method of rounding is often called "Banker’s Rounding".


default   (2005-02-04 21:03:00) [4]

а почему когда целая часть числа чётная при дробной части 0.5
Round округляет в меньшую сторону, а когда нечётная при той же дробной части - в большую?


12345   (2005-02-04 19:30:00) [5]

Ну хорошо - максимум на два. А доказать это можно?
А то вдруг пример найдется где и на три.


raidan   (2005-02-03 14:30:00) [6]

Точно, я тупица.

memo1.Lines.Add(inttostr(round(1.5)+round(1.5)+round(1.5)));
memo1.Lines.Add(inttostr(round(1.5+1.5+1.5)));


Ega23   (2005-02-03 14:04:00) [7]

ax=0.5, ay=0.5, az=1


raidan   (2005-02-03 13:56:00) [8]

Не может на два.


TUser   (2005-02-03 13:04:00) [9]

Да нет, может на 2 отличаться, если имеется в виду Round из Delphi и не использован SetRoundingMode.


Наверх

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