jkbreaux@san.rr.com
2004-May-22 06:34 UTC
[Rd] Inaccurate and Inconsistent results from 'round' function (PR#6905)
Full_Name: Jim Breaux Version: 1.9.0 OS: WinXP Submission from: (NULL) (209.78.110.135) According to the help for 'round' it is supposed to round to the even digit. However, see the following examples: In the following, R is rounding down:> round(0.3645, 3)[1] 0.364> round(0.3655, 3)[1] 0.365> round(0.3665, 3)[1] 0.366> round(0.3675, 3)[1] 0.367> round(0.3685, 3)[1] 0.368> round(0.3695, 3)[1] 0.369 However, in the examples below, R sometimes rounds to the even digit and sometimes to the odd digit:> round(40.3695, 3)[1] 40.37> round(40.3685, 3)[1] 40.368> round(40.3675, 3)[1] 40.367> round(40.3665, 3)[1] 40.367> round(40.3655, 3)[1] 40.365
dmurdoch@pair.com
2004-May-22 11:49 UTC
[Rd] Inaccurate and Inconsistent results from 'round' function (PR#6905)
On Sat, 22 May 2004 06:34:14 +0200 (CEST), jkbreaux@san.rr.com wrote:>Full_Name: Jim Breaux >Version: 1.9.0 >OS: WinXP >Submission from: (NULL) (209.78.110.135) > > >According to the help for 'round' it is supposed to round to the even digit. >However, see the following examples:This is not a bug. The problem is that floating point types do not represent all decimal values exactly, so when you say > round(40.3655, 3) [1] 40.365 you are actually rounding a number which is slightly smaller than 40.3655. The rounding works as advertised on exactly representable numbers: > round(0.25,1) [1] 0.2 > round(0.75,1) [1] 0.8 Duncan Murdoch