При выполнении std::ceil
для двойного значения значение будет округлено до целого числа. Таким образом, 3.3 станет 4.0. Который может быть приведен или усечен до int
. Что «отрежет» часть после запятой. Так:
int foo = (int)std::ceil(3.3);
Так что на первый взгляд это будет хранить 4 в foo. Однако двойное число является значением с плавающей запятой. Так что это может быть либо 4.000000001
, либо 3.999999999
. Последний будет усечен до 3.
Но на практике я никогда не видел, чтобы такое поведение происходило. Могу ли я с уверенностью предположить, что любая реализация вернет 4? Или это только IEEE-754
делает это. Или мне просто повезло?