Re[3]: ф-я округления вещественного числа ???
От: jazzer Россия Skype: enerjazzer
Дата: 22.07.04 05:59
Оценка:
Здравствуйте, _Vladimir_, Вы писали:

_V_>Здравствуйте, orangy, Вы писали:


O>>
O>>template<typename T> int round(T value) { return int(value + 0.5); }
O>>


_V_>Здесь есть один тонкий момент, оператор преобразования (int)value,

_V_>будет реализован как загрузка value в регистр сопроцессора,
_V_>и выгрузка его в память как целое значение.
_V_>При выгрузке регистра его значение может быть преобразовано в целое
_V_>различными способами (в большую строну, меньшую или округление),
_V_>это будет зависеть от состояния флагов сопроцессора.
_V_>Вообщем, нет гарантии, что (int) все время будет возвращаеть ближайщее целое снизу.
_V_>И потом, я не видел, чтобы стандарт C++ явно указывал на то
_V_>как должен работать оператор (int).

[conv.fpint] 4.9 Floating-integral conversions
1 An rvalue of a floating point type can be converted to an rvalue of an integer type. The conversion truncates; that is, the fractional part is discarded.


так что по умолчанию происходит sign(x)*floor(abs(x))
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.