[#80531] Re: [ruby-cvs:65407] normal:r58236 (trunk): thread.c: comments on M:N threading [ci skip] — Eric Wong <normalperson@...>
SASADA Koichi <ko1@ruby-lang.org> wrote:
On 2017/04/02 11:35, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Eric Wong <normalperson@yhbt.net> wrote:
On 2017/05/08 9:33, Eric Wong wrote:
On 2017/05/08 10:53, SASADA Koichi wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/08 12:01, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/08 15:36, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 12:38, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 14:12, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
On 2017/05/09 15:23, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Thank you.
[#80763] [Ruby trunk Feature#13434] better method definition in C API — naruse@...
Issue #13434 has been updated by naruse (Yui NARUSE).
[#80844] [Ruby trunk Bug#13503] Improve performance of some Time & Rational methods — watson1978@...
Issue #13503 has been updated by watson1978 (Shizuo Fujita).
[#80892] [Ruby trunk Misc#13514] [PATCH] thread_pthread.c (native_sleep): preserve old unblock function — ko1@...
Issue #13514 has been updated by ko1 (Koichi Sasada).
ko1@atdot.net wrote:
On 2017/04/27 8:58, Eric Wong wrote:
SASADA Koichi <ko1@atdot.net> wrote:
Eric Wong <normalperson@yhbt.net> wrote:
[ruby-core:80645] [Ruby trunk Bug#13420] Integer#{round, floor, ceil, truncate} should always return an integer, not a float
Issue #13420 has been reported by stomar (Marcus Stollsteimer).
----------------------------------------
Bug #13420: Integer#{round,floor,ceil,truncate} should always return an integer, not a float
https://bugs.ruby-lang.org/issues/13420
* Author: stomar (Marcus Stollsteimer)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: r58307
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
The current behavior of Integer#{round,floor,ceil,truncate} produces wrong results for large integers.
In the case of a positive precision argument, these methods return the receiver converted to a float, effectively doing the same as `to_f`.
```
2.round(1) # => 2.0
```
This leads to errors for large integers:
```
(10**25).round(2).to_i # => 10000000000000000905969664
(10**400).round(2) # => Infinity
```
Mathematically speaking, the value of an integer should not be changed by #round, #floor, #ceil, or #truncate, regardless of the precision (when positive). An integer rounded to e.g. 2 decimal digits is still the same (and exact) integer.
The desired behavior should be to keep precision as high as possible by not needlessly converting to Float.
The provided patch fixes these methods to return `self` for positive precision argument, similar to the behavior without a specified precision, i.e. precision 0.
---Files--------------------------------
0001-Integer-round-floor-ceil-truncate.patch (5.69 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>