Hallo Rainer,
On 24/05/07, Rainer Jung <[EMAIL PROTECTED]> wrote:
Hallo zusammen!
Ich hab ein kleines Problem, Tests funktionieren bei mir nicht (unter
Linux), die bei meinen Kollegen laufeni (auf Windows/Mac).
Ich hab das Problem soweit eingekreist, auf folgendes Phaenomen:
irb(main):001:0> require 'bigdecimal'
=> true
irb(main):002:0> BigDecimal.new('6.0')
=> #<BigDecimal:b79e65e4,'0.6E1',4(8)>
irb(main):003:0> BigDecimal.new('6.0').to_f
=> 6.0
irb(main):004:0> BigDecimal.new('6.0').to_f.to_i
=> 5
irb(main):005:0>
Kennt das jemand, ist das irgendeine System-Sache!?
Ist irgendwie komisch!
Willkommen in der wunderbaren Welt der Fließkommazahlen ;-)
Das ist systembedingt und hängt mit der internen Repräsentation von
Fließkommazahlen zusammen.
wenn du
printf("%.55f",BigDecimal.new('6.0').to_f)
5.9999999999999991118215802998747676610946655273437500000=> nil
eingibst, siehst du, daß das, was du für eine glatte 6.0 hältst, nur ganz
knapp darunter liegt - und .to_i nimmt davon natürlich nur den ganzzahligen
Anteil. xxx.to_f.to_i ist eine ganz gefährliche Sache; richtig wäre in
diesem Fall, zu runden (ggf. mit einer Anzahl von gewünschten
Nachkommastellen).
Gruß
-Thomas
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug