Project

General

Profile

Actions

Bug #12580

closed

Difference in sprintf float rounding

Bug #12580: Difference in sprintf float rounding

Added by vipulnsward (Vipul Amler) over 9 years ago. Updated almost 9 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0dev (2016-07-10 trunk 55628) [x86_64-darwin15]
[ruby-core:76336]

Description

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

Updated by nobu (Nobuyoshi Nakada) over 9 years ago Actions #1 [ruby-core:76340]

  • Status changed from Open to Feedback

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?

Updated by vipulnsward (Vipul Amler) over 9 years ago Actions #2 [ruby-core:76381]

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.

Updated by vipulnsward (Vipul Amler) almost 9 years ago Actions #3 [ruby-core:78082]

I believe, we can close this based on discussion on https://twitter.com/a_matsuda/status/796782820454580224 ?

Updated by shyouhei (Shyouhei Urabe) almost 9 years ago Actions #4 [ruby-core:78083]

  • Status changed from Feedback to Closed

OK, closing as per request.

Actions

Also available in: PDF Atom