Issue #8299 has been updated by naruse (Yui NARUSE).


Student (Nathan Zook) wrote:
> Double calculations are not in themselves platform dependent except in the IEEE-754 boundary cases.  These boundaries are extremely narrow, such as half way from min normal to max denormal.  If there is a platform dependence, then the libraries involved must be either setting the hardware control bits differently, or computing the values differently.  The value in question is no where near the double precision boundary, so there must be a difference in either how the libraries are doing the conversion or in how the rounding bits are being set.
> 
> This may be worth investigation to see the source of the difference.

Learn 80bit precision of x87's FPU as I wrote in [ruby-core:54485].

Moreover there's non IEEE-754 fp for example VAX.
----------------------------------------
Backport #8299: Minor error in float parsing
https://bugs.ruby-lang.org/issues/8299#change-38793

Author: bobjalex (Bob Alexander)
Status: Rejected
Priority: Normal
Assignee: 
Category: 
Target version: 


I encountered a float that either parses [slightly] differently (or converts to string differently) in Ruby than it does in Python or Java. This looks like a  Ruby bug since the result "looks" incorrect.

It is easily reproduced by entering the magic number (-1.1505945E-5) into irb. It behaves the same in 2.0 and 1.9. I'm using Windows.

Below is an irb session that demonstrates. Also included are JRuby and Python trials that show better behavior.

This issue is not causing me any problems, but just in case someone there is interested in looking into it...

Bob

>ruby -v
ruby 2.0.0p0 (2013-02-24) [i386-mingw32]

>irb
irb(main):001:0> RUBY_VERSION
=> "2.0.0"
irb(main):002:0> -1.1505945E-5
=> -1.1505945000000001e-05

>ruby19 -v
ruby 1.9.3p392 (2013-02-22) [i386-mingw32]

>irb19
irb(main):001:0> RUBY_VERSION
=> "1.9.3"
irb(main):002:0> -1.1505945E-5
=> -1.1505945000000001e-05
irb(main):002:0>

>jirb
irb(main):001:0> -1.1505945E-5
=> -1.1505945e-05

>python
Python 2.7.4rc1 (default, Mar 24 2013, 14:34:32) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> -1.1505945E-5
-1.1505945e-05
>>> repr(-1.1505945E-5)
'-1.1505945e-05'




-- 
http://bugs.ruby-lang.org/