On 2010-08-18, at 16:53 , Raphaël Valyi wrote:
> BTW, Ruby get the result right always using Ruby Floats, not sure how they
> differ.

Different output formatting. Floats are floats are floats (unless they're 
doubles) and can't store `0.1005` exactly, but they way they're printed can 
change.

Take the expression above in a Python console and compare its repr and its str.

As for Ruby, check the value it yields if you print it with a precision of 17 
or more:

>> sprintf( "%.17f", v)
=> "0.10049999999999995"
>> sprintf( "%.20f", v)
=> "0.10049999999999995048"

With a precision of 16 or less, the rounding will yield `0.1005[a bunch of 
zeroes]`. Python exhibits the exact same behavior:

>>> "{:.16}".format(v)
'0.1005000000000000'
>>> "{:.17}".format(v)
'0.10049999999999995'
>>> "{:.20}".format(v)
'0.10049999999999995048'

Python's repr just happens to have a default precision of 17.
_______________________________________________
Mailing list: https://launchpad.net/~openerp-expert-framework
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-expert-framework
More help   : https://help.launchpad.net/ListHelp

Reply via email to