Language agnostic round()和&;之间有什么区别;trunc()函数?

Language agnostic round()和&;之间有什么区别;trunc()函数?,language-agnostic,math,background,Language Agnostic,Math,Background,我对这些函数很困惑?在数学中,意味着四舍五入到最接近的整数,所以四舍五入3.4得到3,四舍五入3.6得到4 另一方面,意味着将分数部分全部删除,因此3.4或3.6都会导致3 大多数编程语言和库也遵循这一点 round()和trunc(),在大多数编程语言中,对应于IEEE-754标准规定的四种基本舍入模式中的两种 四种舍入模式、相应的舍入函数以及它们在各种输入上的行为示例如下: rounding mode function [1] results of rounding:

我对这些函数很困惑?

在数学中,意味着四舍五入到最接近的整数,所以四舍五入3.4得到3,四舍五入3.6得到4

另一方面,意味着将分数部分全部删除,因此3.4或3.6都会导致3

大多数编程语言和库也遵循这一点

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] C和C派生语言中的
round()
函数与IEEE-754舍入到最近舍入模式不完全对应。具体来说,它在处理确切的案件方面有所不同。C
round()
函数将“与零的关系”舍入,这可能是您在小学时学到的,但会在某些计算中引入偏差。IEEE-754四舍五入至最近模式规定将领带四舍五入至最近的偶数,这在保持确定性的同时不太可能引入偏差。

您可以从