【问题标题】:What is the difference between round() & trunc() function?round() 和 trunc() 函数有什么区别?
【发布时间】:2010-05-25 10:36:58
【问题描述】:

我对这些功能很困惑?

【问题讨论】:

  • 你可以从Here

标签: language-agnostic math background


【解决方案1】:

在数学中,rounding 表示四舍五入到最接近的整数,因此四舍五入 3.4 得到 3,四舍五入 3.6 得到 4。

另一方面,Truncating 表示完全删除小数部分,因此 3.4 或 3.6 的结果为 3。

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

【讨论】:

    【解决方案2】:

    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 舍入到最接近的模式指定关系被舍入到最接近的偶数,这样在保持确定性的同时不太可能引入偏差。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多