round( )
и trunc( )
в большинстве языков программирования соответствуют двум из четырех базовых режимов округления , определенных стандартом IEEE-754.
Четыре режима округления,соответствующие функции округления и примеры их поведения на различных входах:
rounding mode function [1] results of rounding:
0.2 1.7 -2.6 -3.3
---------------------------------------------------------------------------------
round to nearest round( ) [2] 0.0 2.0 -3.0 -3.0
round to zero trunc( ) 0.0 1.0 -2.0 -3.0
round to +infinity ceil( ) 1.0 2.0 -2.0 -3.0
round to -infinity floor( ) 0.0 1.0 -3.0 -4.0
[1] стандарт IEEE-754 не требует этих имен, и не все языки используют одинаковыеимена.Это всего лишь самые распространенные имена из моего опыта.
[2] функция round( )
в языках, производных от C и C, не совсем соответствует режиму округления до ближайшего IEEE-754.В частности, он отличается обработкой точных промежуточных случаев.Функция C round( )
округляет «связи от нуля», что, вероятно, является тем, что вы изучили в начальной школе, но вводит смещение в определенные вычисления.Режим округления до ближайшего IEEE-754 указывает, что связи округляются до ближайшего четного числа, что с меньшей вероятностью приведет к смещению при сохранении детерминизма.