[R] Integer / floating point question

Berwin A Turlach statba at nus.edu.sg
Fri May 16 22:03:05 CEST 2008


G'day Brian,

On Fri, 16 May 2008 19:28:59 +0100 (BST)
Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:

> 'numeric' is a class but not a type -- so I think the FAQ is wrongly 
> worded but the concept is well defined 

Though there may be multiple definitions. :-)

Reading a bit in "R Language Definition" (yes, I am aware that it is a
draft), 'numeric' seems to be also used as a mode.  I guess this comes
from S3, the mode (no pun intended) that I am still using and thinking
in mostly, and that 'numeric' being a class came in with S4.  And I
notice that mode(1L) and class(1L) gives different results, the former
returns "numeric" while the latter returns "integer".
 
Hence, when I read "R's numeric type" in the FAQ, I take this as
referring to those basic types that are of mode numeric, i.e. integer
and real.  I am not sure whether changing this to "R's object of
mode 'numeric'" or "R's object class 'numeric'" will make the answer
more readable/understandable. 

> But it does not say that all such numbers can be represented
> exactly, and only some can.

I am well aware that integers and reals can only hold "integers and
fractions whose denominator is a power of 2" from a limited range; in
particular, the former will not hold any fractions.  However, given the
discussion in Goldberg (which FAQ 7.31 points to) on changing from
binary to decimal representation and back, I would expect that given
any such number (within the appropriate range) in decimal
representation, it would be transformed into the correct, exact binary
representation. However, I also know that if I stumble across an
example where this is not the case, I shall only complain after
ensuring that documented behaviour is violated and that the FAQ not
necessarily documents expected behaviour.

I guess Duncan's answer said it all, at the extreme ends of the
appropriate ranges surprises might lurk, but it would be considered a
serious bug if R did not transform small integers into their exact
binary representation.

Cheers,

	Berwin



More information about the R-help mailing list