From: Alex Young Date: 2012-09-02T19:47:19+09:00 Subject: [ruby-core:47392] Re: [ruby-trunk - Feature #6958][Rejected] buggy BigDecimal#integer? On 02/09/2012 05:45, nobu (Nobuyoshi Nakada) wrote: > > Issue #6958 has been updated by nobu (Nobuyoshi Nakada). > > Status changed from Open to Rejected > > I was wrong. > > Numeric#integer? returns true if the receiver is an instance of integral class, or false. > BigDecimal is not an integral object, so it must return false always, as well as Float. That's an implementation detail, surely? Mathematically, isn't it true to say that 1.0 (as understood by BigDecimal) *is* an integer? If so, wouldn't a second method, #integral? be better for the case where you want to know if a numeric is of an integral class? -- Alex > > 1.0.integer? #=> false > > What you expect is not #integer? method. > ---------------------------------------- > Feature #6958: buggy BigDecimal#integer? > https://bugs.ruby-lang.org/issues/6958#change-29134 > > Author: adrianomitre (Adriano Mitre) > Status: Rejected > Priority: High > Assignee: > Category: lib > Target version: > > > =begin > BigDecimal#integer? always return false, which is wrong in many cases, as shown below. > > x, y = BigDecimal('1'), BigDecimal('1.0') > > x.integer? > #=> false > > y.integer? > #=> false > > x == x.to_i > #=> true > > y == y.to_i > #=> true > > # Possible workaround > # > class BigDecimal > def integer? > self == self.to_i > end > end > =end > > >