[#23231] What do you think about changing the return value of Kernel#require and Kernel#load to the source encoding of the required file? — =?ISO-8859-15?Q?Wolfgang_N=E1dasi-Donner?= <ed.odanow@...>

Dear Ruby developers and users!

8 messages 2009/04/17

[#23318] [Feature #1408] 0.1.to_r not equal to (1/10) — Heesob Park <redmine@...>

Feature #1408: 0.1.to_r not equal to (1/10)

19 messages 2009/04/26

[ruby-core:23206] Re: [Bug #1336] Change in string representation of Floats

From: Gary Wright <gwtmp01@...>
Date: 2009-04-14 17:28:16 UTC
List: ruby-core #23206
On Apr 14, 2009, at 2:06 AM, Urabe Shyouhei wrote:

> Gary Wright wrote:
>>
>> I don't think it is even possible unless you introduce binary (or  
>> maybe
>> hex) floating point literals.  That is the only way you are going  
>> to be
>> able to safely round-trip between an internal IEEE floating point  
>> value
>> and a string representation.
>
> No that's not the only one.  Take a look at [ruby-core:23145].  You  
> can reach
> to the same answer when you happen to think that hexadecimal numbers  
> are all
> representable in decimal.  So are binaries.  Not all decimal floats  
> can be
> represented in binary, but all binary floats must have a  
> corresponding decimal
> representation.  That is sufficient for this situation.

Thanks for that pointer.  I see what you mean.

What about literal values for NaN, Infinity, -Infinity?

IEEE also defines negative 0.0, which has interesting behavior in Ruby  
(1.8):

 >> z = 0.0
 >> nz = -0.0
 >> p z
0.0
=> nil
 >> p nz
-0.0
=> nil
 >> z == nz
=> true
 >> z.eql? nz
=> true

I would have thought that z.eql?(nz) might be false.  There doesn't  
seem to be a way to query a float to distinguish between -Infinity and  
Infinity or between -0.0 and 0.0 other than via #to_s.


In This Thread