(Ted Harding) wrote: > > This happens also when you use C's fprintf and sprintf (at any rate > in my gcc): >
r's printing routines (e.g., print, sprintf, cat, anything else?) seem to rely on the underlying c sprintf, with no prior r-implemented rounding. hence they import into r whatever standards-related problems may the c counterpart have. > #include <stdio.h> > #include <math.h> > why 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). > indeed. i posted a similar example in reaction to the original 'excel bug' response. > 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! it does (seems to), but probably shouldn't, if excel bugs are to be avoided. however, passing the input from sprintf('%.1f', x) through round to do the rounding would require some work to first parse the format and decide the number of decimal digits. not that it's undoable. vQ ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.