Micah_Altman@harvard.edu
2005-Dec-29 21:10 UTC
[Rd] Inconsistent IEEE 754/IEC 60559 rounding behavior (PR#8452)
Full_Name: Micah Altman Version: 2.2 OS: Windows/Linux (RHELv3) Submission from: (NULL) (71.243.63.53) Documentation for round()/signif() indicates that IEC 60559 standard is used, "_go to the even digit_" is used for rounding off a 5. However, signif(), round() and sprintf() do not behave consistently -- rounding using round() follows this rule, signif() does not, and sprintf() follows the rule on Linux but not on Windows():> version_ platform x86_64-redhat-linux-gnu arch x86_64 os linux-gnu system x86_64, linux-gnu status major 2 minor 2.0 year 2005 month 10 day 06 svn rev 35749 language R> sessionInfo()R version 2.2.0, 2005-10-06, x86_64-redhat-linux-gnu attached base packages: [1] "methods" "stats" "graphics" "grDevices" "utils" "datasets" [7] "base"> sprintf("%#.1g",as.double(0.25))[1] "0.2"> round(.25,digits=1)[1] 0.2> signif(.25,digits=1)[1] 0.3> version_ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status major 2 minor 2.0 year 2005 month 10 day 06 svn rev 35749 language R> sessionInfo()R version 2.2.0, 2005-10-06, i386-pc-mingw32 attached base packages: [1] "methods" "stats" "graphics" "grDevices" "utils" "datasets" "base"> sprintf("%#.1g",as.double(0.25))[1] "0.3"> round(.25,digits=1)[1] 0.2> signif(.25,digits=1)[1] 0.3>