Re[9]: RoundTo
От: Аноним  
Дата: 15.09.04 18:47
Оценка:
Здравствуйте, AMogil, Вы писали:

AM>
AM>Интересный фокус:
AM>При вычислении SimpleRoundTo(1.345 , -2) по информации watch'a:



AM>RoundMode                                                   rmUp            rmDown

AM>В исходном коде SimpleRoundTo
AM>AValue / LFactor                                        134.5                        134.5
AM>(AValue / LFactor) + 0.5                        135                            135
AM>Trunc((AValue / LFactor) + 0.5)        134 (!!!!!)            135

AM>В моем коде (Trunc(135))                        135                            135

AM>Фокус, блин.
AM>



Да, дело в IntPower.
rmNearest
lFactor := IntPower(10, -2) > 0.01 !
Frac((AValue / LFactor) + 0.5) = 1 !!!
отсюда и Trunc(...) = 134

rmDown
lFactor := IntPower(10, -2) < 0.01
дальше все нормально.


Явно борландовые фокусники
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.