[#23132] [Bug #1357] Fixing variables into specific CPU registers deemed overrated & may disturb compilers' optimizers — Ollivier Robert <redmine@...>
Bug #1357: Fixing variables into specific CPU registers deemed overrated & may disturb compilers' optimizers
[#23154] [Bug #1363] Wrong value for Hash of NaN — Heesob Park <redmine@...>
Bug #1363: Wrong value for Hash of NaN
Hi,
Hi,
Yukihiro Matsumoto wrote:
[#23168] [Bug #1367] flatten(0) is not consistent with flatten(), flatten(1), etc. — Paul Lewis <redmine@...>
Bug #1367: flatten(0) is not consistent with flatten(), flatten(1), etc.
Issue #1367 has been updated by Paul Lewis.
[#23174] [Feature #1371] FTPS Implicit — Daniel Parker <redmine@...>
Feature #1371: FTPS Implicit
[#23193] Regexp Encoding — James Gray <james@...>
I'm trying to document the Encoding Regexp objects receive for the
[#23194] [Feature #1377] Please provide constant File::NOATIME — Johan Walles <redmine@...>
Feature #1377: Please provide constant File::NOATIME
[#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!
Wolfgang N叩dasi-Donner wrote:
Wolfgang N叩dasi-Donner wrote:
Michael Neumann schrieb:
[#23252] [Bug #1392] Object#extend leaks memory on Ruby 1.9.1 — Muhammad Ali <redmine@...>
Bug #1392: Object#extend leaks memory on Ruby 1.9.1
[#23267] StringIO: RubySpec violation — Hongli Lai <[email protected]>
I ran RubySpec against the 1.8.6-p368 release. It seems that
[#23289] [Bug #1399] Segmentation fault is raised when you use a postgres gem — Marcel Keil <redmine@...>
Bug #1399: Segmentation fault is raised when you use a postgres gem
[#23297] Ruby Oniguruma question — Ralf Junker <ralfjunker@...>
I see that the Ruby source code contains modified and more recent version of the Oniguruma regular expression library.
[#23305] [Bug #1403] Process.daemon should do a double fork to avoid problems with controlling terminals — Gary Wright <redmine@...>
Bug #1403: Process.daemon should do a double fork to avoid problems with controlling terminals
Hi,
[#23311] [Bug #1404] Net::HTTP::Post failing when a post field contains ":" — Ignacio Martín <redmine@...>
Bug #1404: Net::HTTP::Post failing when a post field contains ":"
[#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)
Issue #1408 has been updated by tadayoshi funaba.
Hi,
Hi.
Issue #1408 has been updated by Marc-Andre Lafortune.
Issue #1408 has been updated by Roger Pack.
[#23321] [Bug #1412] 1.8.7-p160 extmk.rb fails when cross compiling — Luis Lavena <redmine@...>
Bug #1412: 1.8.7-p160 extmk.rb fails when cross compiling
[ruby-core:23123] Re: [Bug #1336] Change in string representation of Floats
I have to agree with Brian on this.
A quick, informal survey of various other languages shows that, by default,
most
will faithfully convert floating point 2.4 from a string to float and back
again.
'C', 'C++', Lua, Haskell, Matlab, BASIC, Pascal, etc.
all output "2.4" when their best floating point approximation of 2.4 is
converted to a string
with default options.
Python, however, does output 2.3999...
While someone can probably find another commonly used language that behaves
as Python does in this regard, I'm sure such languages are firmly in the
minority.
A good compromise solution, in Ruby's case, would be to redefine
Float#inspect such that it preserves the value's full precision without
rounding (for round-tripping, ultimate "truth", or whatever), while leaving
Float#to_s as it was.
This is consistent with other uses of the inspect method. Consider, for
example, that String and Symbol#to_s will return unquoted, ambiguous output
strings, while the corresponding #inspect methods return fully quoted,
unambiguous results.
It might also be a good idea to include a paragraph or two about the
behavior of limited precision floating point numbers in Ruby Doc for the
Float class. Include {puts 2.4} verses {p 2.4} as an example. After all,
the crux of this issue is education about the behavior of Floats that every
programmer using them really needs to understand, regardless of how they are
output.
Having said all this, I'm not going to get too worked up about it. I will
just sigh and add:
class Float
def to_s
"%g" % self
end
end
to the home grown Ruby version compatibility library that I already require
in most of my apps.
- brent
brixen wrote:
>
> On Fri, Apr 3, 2009 at 11:49 PM, Roger Pack <[email protected]> wrote:
>> Issue #1336 has been updated by Roger Pack.
>>
>>
>>>> * numeric.c (flo_to_s): keeps enough precision for round trip.
>>
>> One possibility would be to allow Float#to_s to still be (depending on
>> how you look at it) "friendly" or "imprecise."
>>
>> And keep the precise version for Float#inspect.
>>
>> The benefit of having them both verbose is that (tongue in cheek) it
>> makes floats hideously ugly which might encourage people to avoid them :)
>>
>> But having both available separately via #inspect and #to_s would be nice
>> and I'd imagine a patch to that effect would be well received.
>>
>> A discussion on it can be read at http://www.ruby-forum.com/topic/179361
>
> It's not an issue of float precision. It is an issue of representation
> and there are many possibly representations of a float. The previous
> representation was user-friendly. The change is not.
>
> The only justification for the change that I see is this idea that
> there is value to being able to round trip a float from #to_s through
> eval. However, I think that is a poor reason to change because:
>
> 1. I can count the number Ruby classes that can be round-tripped this
> way on one hand.
> 2. There is a perfectly good mechanism for round-tripping any Ruby object.
> 3. If you don't want to marshal, you can use #sprintf when *you* want
> to round-trip a float via a string and eval.
> 4. The vast majority of times a float is represented as a string it is
> *not* to round-trip.
>
> So, this decision takes a marginal case for which a perfectly good
> mechanism already exists and promotes it to the common case. But
> that's not all. The consequence for the common case is that 2.4 is
> unnecessarily and uselessly echoed back to me as 2.3999999999999999.
>
> It is very poor interface design to promote a marginal case above a
> common case. There is nothing that this change in representation makes
> better in the common case. It makes the common case hideous.
>
> Floats are what they are. Use them as you will. Ruby used to have
> nice, friendly representations of floats for humans. Nothing gained,
> much lost. The decision should be reversed.
>
> Brian
>
>>
>> Cheers.
>> -=r
>> ----------------------------------------
>> http://redmine.ruby-lang.org/issues/show/1336
>>
>> ----------------------------------------
>> http://redmine.ruby-lang.org
>>
>>
>
>
>
--
View this message in context: http://www.nabble.com/-ruby-core%3A23075---Bug--1336--Change-in-string-representation-of-Floats-tp22798535p22896937.html
Sent from the ruby-core mailing list archive at Nabble.com.