【发布时间】:2012-04-07 10:57:10
【问题描述】:
GNU bash,版本 4.2.24:
$> printf "%.0f, %.0f\n" 48.5 49.5
48, 50
Ruby 1.8.7
> printf( "%.0f, %.0f\n", 48.5, 49.5 )
48, 50
Perl 5.12.4
$> perl -e 'printf( "%.0f, %.0f\n", 48.5, 49.5 )'
48, 50
gcc 4.5.3:
> printf( "%.0f, %.0f\n", 48.5, 49.5 );
48, 50
GHC,版本 7.0.4:
> printf "%.0f, %.0f\n" 48.5 49.5
49, 50
维基百科说这种四舍五入叫做round half to even:
这是 IEEE 754 计算函数和运算符中使用的默认舍入模式。
为什么在 C、Perl、Ruby 和 bash 中默认使用这种舍入,而在 Haskell 中却没有?
这是某种传统还是标准?如果它是一个标准,为什么它被那些语言使用而不被 Haskell 使用?四舍五入有什么意义?
【问题讨论】:
-
我想你刚刚回答了你自己的问题。它是 IEEE 754 标准的一部分。
-
@Keith Irwin,我相信他想知道哪个标准。您为什么不将其发布为答案,希望有相关链接?
-
Dmitry:您的问题特别提到了“IEEE 754”。这是标准。
-
如果您知道几个西里尔字母,音译并不难。
-
Haskell printf 应该改为使用四舍五入。