2016-07-16 14 views
0

Ich benutze Ruby 2.3.0p0.Ruby Fließkomma Addition Fehler

Ich habe statt 16.490000000000002

a = 1.5 
b = 14.99 
c = a + b 

in rubin

irb(main):001:0> 1.50 + 14.99 
=> 16.490000000000002 

Das gewünschte Ergebnis sollte 16.49 sein, eine einfache Addition mit 2 Float-Zahlen zu tun versucht, Wie könnte ich das, dass ich so fixiert könnte 16.49 für Variable c bekommen

Prost.

+1

[Was jeder Informatiker über Fließkomma-Arithmetik wissen sollte] (http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

+0

Nun, ich denke, ich habe es gelöst Ein Weg, der vielleicht nicht so elegant ist. erfordern 'bigdecimal'; (BigDecimal ('1.5') + BigDecimal ('14 .99 ')). To_f. Prost. –

Antwort

2

Da Gleitkommazahlen sind nicht so präzise wie Sie denken, sie sind, sie sind oft winzige Stücke von Rauschen, das aus verschiedenen Berechnungen ergeben, ist es in Ihrer Verantwortung, angeben, welches Maß an Präzision wünschen, wenn sie die Anzeige:

a = 1.5 
b = 14.99 

c = a + b 

puts '%.2f' % c 

Die %.2f Schreibweise bedeutet hier, zwei Orte zu haben. %.9f wäre neun Plätze.

So funktionieren Fließkommazahlen. Erwarte nicht, dass sie sauber und ordentlich sind.