[R] specify the number of decimal numbers
(Ted Harding)
Ted.Harding at manchester.ac.uk
Thu May 14 18:16:43 CEST 2009
On 14-May-09 15:15:16, James W. MacDonald wrote:
> Wacek Kusnierczyk wrote:
>> (Ted Harding) wrote:
>>> On 14-May-09 12:27:40, Wacek Kusnierczyk wrote:
>>>
>>>> ... but remember that sprintf introduces excel bugs into r (i.e.,
>>>> rounding is not done according to the IEC 60559 standard, see
>>>> ?round):
>>>>
>>>> ns = c(0.05, 0.15)
>>>> round(ns, 1)
>>>> # 0.0 0.2
>>>> as.numeric(sprintf('%.1f', ns))
>>>> # 0.1 0.1
>>>> vQ
>>>>
>>> True! And thanks for importing that point into the discussion.
>>
>> said but true, true but sad. i have already raised the issue on
>> this list earlier, but to no response. apparently, this sort of
>> excel bug in r is an intentional feature, so you may not get it
>> improved anytime soon. unless you submit a patch and get it
>> accepted, that is.
>
> Have you brought this 'issue' up with the Perl people as well?
>
> perl -e 'print sprintf("%.1f", 0.05) . "\n";'
> 0.1
> perl -e 'print sprintf("%.1f", 0.15) . "\n";'
> 0.1
This happens also when you use C's fprintf and sprintf (at any rate
in my gcc):
#include <stdio.h>
#include <math.h>
main(argc,argv) int argc; char **argv;
{
fprintf(stdout, "%.1f\n", 0.15);
fprintf(stdout, "%.1f\n", 0.05);
fprintf(stdout, "%.2f\n", 0.15);
fprintf(stdout, "%.2f\n", 0.05);
}
cc -o testprint3 testprint3.c
./testprint
0.1
0.1
0.15
0.05
(with similar output when printing a string formatted by sprintf).
So, in so far a R relies on the compiler's implementation of the
*printf functions, this can hardly be put right withbout re-writing
[g]cc!
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 14-May-09 Time: 17:16:40
------------------------------ XFMail ------------------------------
More information about the R-help
mailing list