Skip to content

2 significant digits

2 messages · carol white, Marc Schwartz

#
Hi,
How to represent a rounded number ending with 0 with 2-significant digits? If I have for ex, 0.8031 and I use signif or round with digits = 2, I'll get 0.8. If I use format, I get character type (even if I pass number as parameter) and if I convert with as.numeric, I'll lose one significant digit (0):
[1] "13.70"
[1] 13.7


Regards,

Carol
#
On Nov 10, 2009, at 10:22 AM, carol white wrote:

            
See ?sprintf if you want to force two decimal places, as opposed to  
two significant digits:

 > sprintf("%.2f", 0.8031)
[1] "0.80"

A trailing zero is not a significant digit, hence it will not be  
displayed if you are formatting based upon significant digits, as  
opposed to a fixed number of decimal places.

If you want to force the formatting of a numeric value for output, it  
will end up being a character, which should not be a problem, since  
you are presumably looking to display or output the number for  
reading, not to be used for subsequent calculations.

Conceptually, you need to separate how R stores numeric values  
internally, versus how numeric values are displayed (printed) during  
output. By default, R stores numeric values internally as double  
precision floats to allow for mathematical calculations to be  
performed on those values.

The printing of those numbers for output in an R console or GUI, is by  
default based upon significant digits (see ?print.default), but you  
can alter that behavior using various functions such as sprintf, to  
enable "pretty output" for formatted reports and tables, etc.

HTH,

Marc Schwartz