Den 2022-12-19 kl. 15:41, skrev Martin Maechler:
Göran Broström
     on Mon, 19 Dec 2022 14:22:00 +0100 writes:

     > I have a long vector x with five-digit codes where the
     > first digit of each is of special interest, so I extracted
     > them through

     >> y <- x %/% 10000

     > but to my surprise y contained the value -1 in some
     > places. It turned out that x contains -1 as a symbol for
     > 'missing value' so in effect I found that

     >> -1 %/% 10000 == -1

     > Had to check the help page for "%/%", and the first
     > relevant comment I found was:

     > "Users are sometimes surprised by the value returned".

     > No surprise there. Further down:

     > ‘%%’ indicates ‘x mod y’ (“x modulo y”) and ‘%/%’
     > indicates integer division.  It is guaranteed that

     >       ‘ x == (x %% y) + y * (x %/% y) ’ (up to rounding
     > error)

     > I did expect (a %/% b) to return round(a / b), like
     > gfortran and gcc,

What???  I cannot believe you.

Well, you shouldn't, I generalized too far.

No time for checking now, but I bet that
8 / 3  gives 2 and not 3  in C and Fortran
(and hence gcc, etc)

But compare -8 %/% 3 in R and -8 / 3 in C/Fortran.

G,



     > but instead I get floor(a / b) in
     > R. What is the reason for these different definitions? And
     > shouldn't R's definition be documented?



     > Thanks, Göran

     > ______________________________________________
     > R-help@r-project.org mailing list -- To UNSUBSCRIBE and
     > more, see 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.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to