On Jul 9, 2010, at 10:27 AM, Trafim Vanishek wrote:

Thanks everybody for referring me to FAQ 7.31 but I don't see how to solve
it.
I am giving a concrete number and I need to get 58 not 57. Seems, there is
no way?

Building on an example on the help page for as.integer, this seems to be working:

> trnc2 <- function(x) trunc(x) + (trunc(x) < x)*sign(x)*(abs(x - trunc(x)) < .Machine$double.eps^0.5)

> trnc2(0.01*100)
[1] 1
> trnc2(seq(0, 1, by=0.01)*100)
[1] 0 1 2 3 4 5 6 8 8 9 10 11 12 13 15 15 16 17 18 19 [21] 20 21 22 23 24 25 26 27 29 28 30 31 32 33 34 35 36 37 38 39 [41] 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 56 57 58 57 59 [61] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 [81] 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
[101] 100
> trnc2(-seq(0, 1, by=0.01)*100)
[1] 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 [17] -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -28 -30 -31 [33] -32 -33 -34 -35 -36 -37 -38 -39 -40 -41 -42 -43 -44 -45 -46 -47 [49] -48 -49 -50 -51 -52 -53 -54 -55 -56 -57 -57 -59 -60 -61 -62 -63 [65] -64 -65 -66 -67 -68 -69 -70 -71 -72 -73 -74 -75 -76 -77 -78 -79 [81] -80 -81 -82 -83 -84 -85 -86 -87 -88 -89 -90 -91 -92 -93 -94 -95
 [97]  -96  -97  -98  -99 -100

And after looking at that a bit I came up with a shorter alternate that seems to work as well:

trnc3 <- function(x) trunc(x+sign(x)* .Machine$double.eps^0.5)

See also  ?all.equal

--
David.
On Fri, Jul 9, 2010 at 4:05 PM, David Winsemius <dwinsem...@comcast.net >wrote:


On Jul 9, 2010, at 9:46 AM, Trafim Vanishek wrote:

Dear all,

might seem and easy question but I cannot figure it out.

floor(100*(.58))
[1] 57

where is the trick here?


FAQ 7.31


And how can I end up with the right answer?


Define right, please. (There have been several questions in the last week for which FAQ 7.31 was the answer and some of the responses had useful
links.)

--
David Winsemius, MD
West Hartford, CT



        [[alternative HTML version deleted]]

______________________________________________
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.

David Winsemius, MD
West Hartford, CT

______________________________________________
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.

Reply via email to