GNU bash, phiên bản 4.2.24:Strange "một nửa thậm chí" làm tròn bằng các ngôn ngữ khác nhau
$> printf "%.0f, %.0f\n" 48.5 49.5
48, 50
của 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, phiên bản 7.0.4:
> printf "%.0f, %.0f\n" 48.5 49.5
49, 50
Wikipedia nói rằng loại tròn được gọi là round half to even:
Đây là mặc định chế độ sử dụng trong IEEE 754 chức năng tính toán và các nhà khai thác làm tròn .
Tại sao làm tròn này được sử dụng theo mặc định trong C, Perl, Ruby và bash, nhưng không có trong Haskell?
Đây có phải là một số loại truyền thống hoặc tiêu chuẩn không? Và nếu nó là một tiêu chuẩn, tại sao nó được sử dụng bởi những ngôn ngữ đó và không được sử dụng bởi Haskell? Một điểm làm tròn nửa là gì?
Tôi nghĩ bạn vừa trả lời câu hỏi của riêng bạn. Đó là một phần của tiêu chuẩn IEEE 754. –
@Keith Irwin, tôi tin rằng anh ấy muốn biết tiêu chuẩn nào. Tại sao bạn không đăng câu trả lời đó, hy vọng với một liên kết có liên quan? – ikegami
Dmitry: Câu hỏi của bạn đặc biệt đề cập đến "IEEE 754". Đó là tiêu chuẩn. – Gabe