В чем разница между функциями round () и trunc ()? - PullRequest
2 голосов
/ 25 мая 2010

Я очень смущен этими функциями?

Ответы [ 2 ]

11 голосов
/ 25 мая 2010

В математике rounding означает округление до ближайшего целого числа, поэтому при округлении 3,4 получается 3, а при округлении 3,6 - 4.

Truncating, с другой стороны, означает полное удаление дробной части, поэтому либо 3,4, либо 3,6 приводят к 3.

Большинство языков программирования и библиотек также следуют этому.

7 голосов
/ 25 мая 2010

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 указывает, что связи округляются до ближайшего четного числа, что с меньшей вероятностью приведет к смещению при сохранении детерминизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...