class Rational

Eine rationale Zahl kann als ein Paar von Ganzzahlen dargestellt werden: a/b (b>0), wobei a der Zähler und b der Nenner ist. Integer a entspricht mathematisch der rationalen Zahl a/1.

Sie können ein Rational-Objekt explizit erstellen mit

Sie können bestimmte Objekte mit konvertieren

Beispiele

Rational(1)      #=> (1/1)
Rational(2, 3)   #=> (2/3)
Rational(4, -6)  #=> (-2/3) # Reduced.
3.to_r           #=> (3/1)
2/3r             #=> (2/3)

Sie können auch rationale Objekte aus Gleitkommazahlen oder Zeichenketten erstellen.

Rational(0.3)    #=> (5404319552844595/18014398509481984)
Rational('0.3')  #=> (3/10)
Rational('2/3')  #=> (2/3)

0.3.to_r         #=> (5404319552844595/18014398509481984)
'0.3'.to_r       #=> (3/10)
'2/3'.to_r       #=> (2/3)
0.3.rationalize  #=> (3/10)

Ein Rational-Objekt ist eine exakte Zahl, die Ihnen hilft, Programme ohne Rundungsfehler zu schreiben.

10.times.inject(0) {|t| t + 0.1 }              #=> 0.9999999999999999
10.times.inject(0) {|t| t + Rational('0.1') }  #=> (1/1)

Wenn ein Ausdruck jedoch eine ungenaue Komponente (numerischer Wert oder Operation) enthält, erzeugt er ein ungenaues Ergebnis.

Rational(10) / 3   #=> (10/3)
Rational(10) / 3.0 #=> 3.3333333333333335

Rational(-8) ** Rational(1, 3)
                   #=> (1.0000000000000002+1.7320508075688772i)