Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

Функции арифметического округления   Найти похожие ветки 

 
Genry   (2006-03-27 20:14) [0]

Подскажите, есть ли в Дельфи (D7) стандартные функции арифметического (не банковского) округления?
Сейчас такую функцию написал сам, но все-таки интересует наличие именно стандартных и, желательно безглючных :-)
Спасибо.


 
Eraser ©   (2006-03-27 20:21) [1]


> Genry   (27.03.06 20:14)

Round ?


 
Genry   (2006-03-27 20:22) [2]


> Eraser ©   (27.03.06 20:21) [1]


И как заставить ее округлять арифметически?


 
Eraser ©   (2006-03-27 21:00) [3]


> Genry   (27.03.06 20:22) [2]

что значит "арифметически"?


 
Genry   (2006-03-27 21:28) [4]


> Eraser ©   (27.03.06 21:00) [3]


Это означает что

Округл(2.5) = 3

(например)


 
EvS ©   (2006-03-27 22:24) [5]

SimpleRoundTo


 
EHOT ©   (2006-03-27 23:25) [6]

Легче просто Round();


 
Asail   (2006-03-28 01:48) [7]


> Округл(2.5) = 3

RoundTo(2.5, 0)


 
MBo ©   (2006-03-28 07:18) [8]

см. в хелпе Set8087CW


 
EvS ©   (2006-03-28 09:08) [9]

>RoundTo(2.5, 0)

RoundTo(2.5, 0) = 2


 
Genry   (2006-03-28 09:29) [10]


> EvS ©   (27.03.06 22:24) [5]
> SimpleRoundTo


Да, только с отрицательными глючит безбожно :-) Это вобщем-то и по коду видно.


> MBo ©   (28.03.06 07:18) [8]
> см. в хелпе Set8087CW


Спасибо, сейчас гляну :-)


 
Genry   (2006-03-28 10:03) [11]


> MBo ©   (28.03.06 07:18) [8]
> см. в хелпе Set8087CW


К сожалению пока не могу понять, какое значение нужно передать в процедуру чтобы добиться желаемого округления?
Дело в том, что я не силен в свойствах FPU :-(
Вот, нашел поисковиком пример:
Set8087CW(Default8087CW or $0800); - но это дает округление до большего всегда, т.е. напр. RoundTo(2.1, 0) = 3.
С отрицательными числами вобще что-то странное творит.


 
MBo ©   (2006-03-28 10:22) [12]

>К сожалению пока не могу понять, какое значение нужно передать в процедуру чтобы добиться желаемого округления?
Посмотрел интеловскую документацию - только 4 режима доступно - банковское, к нулю, вверх и вниз.

Так что придется Trunc(x+0.5)


 
Genry   (2006-03-28 10:31) [13]


> MBo ©   (28.03.06 10:22) [12]



> Так что придется Trunc(x+0.5)


Да, я сейчас так и делаю, правда с учетом отрицательных чисел.

Trunc(Value + 0.5 * Sign(Value))

Все-таки странно, что нету такой стандартной ф-ции.
Ну и ладно :-)

Всем спасибо !



Страницы: 1 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
15-1142514612
Hover
2006-03-16 16:10
2006.04.09
Помогите небольшую задачку решить


2-1143105021
Andrey_K_M
2006-03-23 12:10
2006.04.09
битовые последовательности


2-1143059740
Georgiy
2006-03-22 23:35
2006.04.09
InitializeAcl SECURITY_ATTRIBUTES крутые вопросы


1-1141886515
Михаил (Киров)
2006-03-09 09:41
2006.04.09
Нуль-модемное соединение


2-1143192167
DmitryNekl
2006-03-24 12:22
2006.04.09
Сохранение сжатого bmp-файла в ClientDataSet