[#47386] [Backport92 - Backport #6958][Open] buggy BigDecimal#integer? — "adrianomitre (Adriano Mitre)" <adriano.mitre@...>
7 messages
2012/09/01
[#47409] [ruby-trunk - Feature #6973][Open] Add an #integral? method to Numeric to test for whole-number values — "regularfry (Alex Young)" <alex@...>
12 messages
2012/09/03
[#47444] [ruby-trunk - Bug #6986][Open] Inconsistent result of BigDecimal#power — "phasis68 (Heesob Park)" <phasis@...>
7 messages
2012/09/06
[#47453] [ruby-trunk - Bug #6994][Open] yield plus splat unwraps too much — "headius (Charles Nutter)" <headius@...>
8 messages
2012/09/07
[#47460] [ruby-trunk - Bug #6997][Open] Improve documentation for OptionParser — "eike.rb (Eike Dierks)" <eike@...>
7 messages
2012/09/08
[#47465] [ruby-trunk - Feature #7003][Assigned] Please decide. MVM to be with 2.0? — "shyouhei (Shyouhei Urabe)" <shyouhei@...>
3 messages
2012/09/10
[#47483] [ruby-trunk - Bug #7009][Open] Crash in method_missing — "alexcoplan (Alex Coplan)" <lexy0202@...>
6 messages
2012/09/12
[#47523] [ruby-trunk - Feature #7022][Open] add event hook for garbage collection — "rogerdpack (Roger Pack)" <rogerpack2005@...>
7 messages
2012/09/14
[#47531] [ruby-trunk - Feature #7022] add event hook for garbage collection
— "rogerdpack (Roger Pack)" <rogerpack2005@...>
2012/09/14
[#47540] autoload & require — Xavier Noria <fxn@...>
Hi,
4 messages
2012/09/15
[#47562] feature request: thread pool class — Roger Pack <rogerdpack2@...>
It has always seemed a bit odd to me that Ruby's sdlib doesn't have some kind of
4 messages
2012/09/17
[#47638] [ruby-trunk - Bug #7046][Open] ERB#run and ERB#result are not safe for concurrent use — "headius (Charles Nutter)" <headius@...>
11 messages
2012/09/21
[#47653] [ruby-trunk - Bug #7050][Open] encoding of String#unpack for 'H', 'h', 'B' and 'b' — "Eregon (Benoit Daloze)" <redmine@...>
6 messages
2012/09/22
[#47655] [ruby-trunk - Feature #7051][Open] Extend caller_locations API to include klass and bindings. Allow caller_locations as a method hanging off Thread. — "sam.saffron (Sam Saffron)" <sam.saffron@...>
13 messages
2012/09/23
[#47709] [ruby-trunk - Bug #7076][Open] TestUnicodeEscape#test_basic failure on Windows — "h.shirosaki (Hiroshi Shirosaki)" <h.shirosaki@...>
4 messages
2012/09/27
[#47719] [ruby-trunk - Bug #7082][Open] Process.kill 0 in windows can return spurious success — "rogerdpack (Roger Pack)" <rogerpack2005@...>
6 messages
2012/09/28
[#47730] [ruby-trunk - Bug #7085][Open] Subversion → GitHub gateway stops. — "shyouhei (Shyouhei Urabe)" <shyouhei@...>
27 messages
2012/09/29
[#47731] [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— "shyouhei (Shyouhei Urabe)" <shyouhei@...>
2012/09/29
[#47743] Re: [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— Evan Phoenix <evan@...>
2012/09/29
Hello shyouhei,
[#47746] Re: [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— Urabe Shyouhei <shyouhei@...>
2012/09/30
On 09/30/2012 02:33 AM, Evan Phoenix wrote:
[#48020] [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— "shyouhei (Shyouhei Urabe)" <shyouhei@...>
2012/10/16
[#48953] [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— "shyouhei (Shyouhei Urabe)" <shyouhei@...>
2012/11/05
[#49123] Re: [ruby-trunk - Bug #7085] Subversion → GitHub gateway stops.
— Evan Phoenix <evan@...>
2012/11/08
So sorry for the continual delay. I'm setting this up right now but it appears that I (evanphx on github) don't have access to push to ruby/ruby. When I am added, I can update the repo immediately.
[#47735] [ruby-trunk - Bug #7087][Open] ::ConditionVariable#wait does not work with Monitor because Monitor#sleep does not exist — "rklemme (Robert Klemme)" <shortcutter@...>
10 messages
2012/09/29
[ruby-core:47606] [ruby-trunk - Bug #7037] float formatting inconsistently rounds half to even
From:
"headius (Charles Nutter)" <headius@...>
Date:
2012-09-20 01:17:27 UTC
List:
ruby-core #47606
Issue #7037 has been updated by headius (Charles Nutter).
The only definition I could find is a sideways use of "processor" to mean "Ruby processor", as in a Ruby language processor, i.e. a Ruby implementation. So... "the underlying platform of a conforming processor" would be the JVM, so it's probably ok for us to dodge the IEEE 754 issue.
Given the wording of the arithmetic rounding text in Float's description and the fact that formatting-related methods are not in the spec, we can probably dodge that issue too.
Of course, that's only if the ISO spec is all we care about :)
At this point I don't think I'm going to try to explore forcing strict IEEE 754, since even on the JVM it is intended as a workaround for specific, localized cases. So that leaves the rounding issue.
Given that there's no help from the spec on whether we should round half to even or half away from zero...what should we, as gentleman programmers, do?
If we agree to "half to even" then JRuby will round 1.05 to 1.0, 1.15 to 1.2, 1.85 to 1.8, and 1.95 to 2.0, which doesn't match MRI.
If we agree to "half away from zero" then MRI's rounding results of 1.25 to 1.2 would not match (the only other tiebreaking case in MRI's current system is 1.75, which already rounds to 1.8 as it would with "half away from zero").
And yes, I've seen that rounding code. I wish I could unsee it.
----------------------------------------
Bug #7037: float formatting inconsistently rounds half to even
https://bugs.ruby-lang.org/issues/7037#change-29559
Author: headius (Charles Nutter)
Status: Closed
Priority: Normal
Assignee:
Category: core
Target version:
ruby -v: 2.0.0dev
MRI does not appear to consistently round half to even. I'm not sure what rounding strategy this is, but it rounds xx05 and xx15 to odd for xxx, and other values to even:
irb(main):001:0> "%1.1f" % 1.05
=> "1.1"
irb(main):002:0> "%1.1f" % 1.15
=> "1.1"
irb(main):003:0> "%1.1f" % 1.25
=> "1.2"
irb(main):004:0> "%1.1f" % 1.35
=> "1.4"
irb(main):005:0> "%1.1f" % 1.45
=> "1.4"
irb(main):006:0> "%1.1f" % 1.55
=> "1.6"
None of the tie-breaking strategies I could find (http://en.wikipedia.org/wiki/Rounding#Tie-breaking) seem to support MRI's model.
If MRI is indeed using "half even", xx05 should round to xx0 and xx15 should round to xx2. An example with Java's BigDecimal appears to support this:
irb(main):029:0> java.math.BigDecimal.new('1.05').round(java.math.MathContext.new(2, java.math.RoundingMode::HALF_EVEN)).to_s
=> "1.0"
irb(main):030:0> java.math.BigDecimal.new('1.15').round(java.math.MathContext.new(2, java.math.RoundingMode::HALF_EVEN)).to_s
=> "1.2"
irb(main):031:0> java.math.BigDecimal.new('1.25').round(java.math.MathContext.new(2, java.math.RoundingMode::HALF_EVEN)).to_s
=> "1.2"
irb(main):032:0> java.math.BigDecimal.new('1.35').round(java.math.MathContext.new(2, java.math.RoundingMode::HALF_EVEN)).to_s
=> "1.4"
We would like clarification about the proper rounding tie-breaker strategy to use so we can fix this JRuby issue properly: http://jira.codehaus.org/browse/JRUBY-6889
--
http://bugs.ruby-lang.org/