On Sun, May 17, 2009 at 5:00 PM, Thomas Mang <thomas.m...@fiwi.at> wrote: > Hi, > > Well, also not quite. > Suppose x = 5.00000000001 (in finite binary represenation). Then I want x == > 5, but that is of course an integer which is now less than the original > numeral. Sorry for that I haven't got what your mean exactly about the finite binary representation, because my English is not very good. How much is the difference of x and 5 when result must be 5?
> Your code would turn it into 6; moreover, your code would still work on > numeric-values, so once it gets to the interger-conversion we are back at > where the problem started, namely at the issue of finite floating-point > representations, which might, or might not, yield the desired integer after > the decimal digits have been truncated. > > BTW, do you know why sometimes replys do not appear in the newsgroups -> > mine to yours is not there, equally not your last response (althought the > later might of course be the resuld because I made a mistak. in the first > step....) The reason our last replys did not appear in the newsgroup is that you replied to me only rather than to the maillist addres r-h...@stat.math.ethz.ch. > > cheers and thanks, > Thomas > > > Linlin Yan wrote: >> >> I see. What you want is the integer with same sign as the original >> numeral, and whose absolute value is the least integer which is not >> less than absolute value of the original numeral. Am I right? I am >> afraid that there may not be any single function could work it out. >> But I could give the following expression: >> sign(x) * ceiling(abs(x)), >> which may be a little clearer. >> >> On Sun, May 17, 2009 at 2:02 PM, Thomas Mang <thomas.m...@fiwi.at> wrote: >> >>> >>> Hi, >>> >>> ceiling would do the wrong thing for negative values. If x = -4.9999999, >>> the >>> wanted result would be -5, but ceiling makes a -4 out of it. >>> >>> bye, >>> Thomas >>> >>> Linlin Yan wrote: >>> >>>> >>>> How about ceiling(x), which return the smallest integer not less than x? >>>> >>>> On Sun, May 17, 2009 at 2:49 AM, Thomas Mang <thomas.m...@fiwi.at> >>>> wrote: >>>> >>>> >>>>> >>>>> Hello, >>>>> >>>>> Suppose I have x, which is a variable of class numeric. The >>>>> calculations >>>>> performed to yield x imply that mathematically it should be an integer >>>>> , >>>>> but >>>>> due to round-off errors, it might not be (and so in either direction). >>>>> The >>>>> error is however small, so round(x) will yield the appropriate integer >>>>> value. Moreover, this integer values is guaranteed to be representable >>>>> by >>>>> an >>>>> 'integer' class, that is -2^31 < x < 2^31, and logically it is an >>>>> integer >>>>> anyway. So I want to convert x from class 'numeric' to 'integer'. What >>>>> is >>>>> the most elegant, but always correct way, to achieve this conversion ? >>>>> >>>>> What comes to mind is of course something along: >>>>> >>>>> x = as.integer(round(x)) >>>>> >>>>> I am, however, not sure if this always works, because I do not know if >>>>> the >>>>> round-function is guaranteed to return a numeric value which, in finite >>>>> binary representation, is always >= the underlying mathematical >>>>> integer. >>>>> If >>>>> that is however guaranteed, that would of course be a simple + elegant >>>>> one. >>>>> >>>>> An alternative I came up with is: >>>>> >>>>> x = as.integer(round(x) + ifelse(x >= 0, 0.5, -0.5)) >>>>> Where I explicitly add a bit to ensure the finite binary representation >>>>> must >>>>> be >= the underlying integer, and then truncate the decimal digits. >>>>> IMO, this one is always guaranteed to work, at least within the >>>>> numerical >>>>> range of what integers are limited to anyway. >>>>> >>>>> >>>>> What's your opinion on the issue ? >>>>> Any other solution ? >>>>> >>>>> Thanks a lot in advance and cheers, >>>>> Thomas >>>>> >>>>> ______________________________________________ >>>>> 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. >>>>> >>>>> >>>>> >>>> >>>> >>> >>> >> >> > > ______________________________________________ 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.