[ruby-core:76381] [Ruby trunk Bug#12580] Difference in sprintf float rounding

From: vipulnsward@...
Date: 2016-07-17 07:15:54 UTC
List: ruby-core #76381
Issue #12580 has been updated by Vipul Amler.


Nobuyoshi Nakada wrote:
> Resulting 5.6 by rounding 5.55 off to one decimal place looks more "natural", than 5.5.
> New behavior considers binary representation error.
> 
> What problem occurs concretely?

hmm, even C does it this way - http://codepad.org/raENqNSj 
No, problem per-se, I was not sure of why this change was, or where it was "fixed". Will fix on Rails End to take this into account.

----------------------------------------
Bug #12580: Difference in sprintf float rounding
https://bugs.ruby-lang.org/issues/12580#change-59629

* Author: Vipul Amler
* Status: Feedback
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.4.0dev (2016-07-10 trunk 55628) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
on 2.4-dev

`
irb(main):006:0> sprintf "%0.01f", 5.55
=> "5.6"
irb(main):007:0> 5.55.class
=> Float
`

on 2.4-preview

`irb(main):001:0> sprintf "%0.01f", 5.55
=> "5.5"
irb(main):002:0> 5.55.class
=> Float
irb(main):003:0>`

Is the change intentional? If yes, what prompted this rounding change?

This is currently causing issues on iso8601 serializer  on Rails https://github.com/rails/rails/blob/04c512da1247a54474cfd8bef17a9e9019c34004/activesupport/lib/active_support/duration/iso8601_serializer.rb#L25



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

In This Thread

Prev Next