4.4 Zahlen 

Auch Zahlen sind Objekte
Alles in Ruby ist ein Objekt, das heißt, primitive Datentypen gibt es nicht. Somit sind auch Zahlen Objekte. Jede Zahlenart hat ihre eigene Klasse, wie z. B. Fixnum, Float, Complex, und diese Klassen erben von der numerischen Klasse Numeric.
Wie man es aus dem Programmieralltag mit anderen Programmiersprachen kennt, ist der Umgang mit großen und kleinen Zahlen nicht ganz unproblematisch. Man muss darauf achten, den richtigen Datentyp zu verwenden, und auch die Konvertierung zwischen den einzelnen Datentypen muss man im Auge haben.
Doch auch das ist in Ruby ganz anders - viel einfacher:
Kleine und große Zahlen
Unter Ruby stehen zum Beispiel unterschiedliche Klassen für kleine Zahlen (Fixnum) und große Zahlen (Bignum) zur Verfügung. Es ist gut, wenn Sie das wissen, aber darum müssen Sie sich nicht kümmern. Die Typzuordnung und -konvertierung erfolgt automatisch, das heißt, sobald Sie eine Zahl eingeben, erzeugt Ruby eine Instanz der zugehörigen Klasse.
>> wert = 99 => 99 >> wert.class => Fixnum >> big_wert = 1234567891011121314151617181920 => 1234567891011121314151617181920 >> big_wert.class => Bignum
Operatoren
Um Berechnungen durchführen zu können, stellen die einzelnen Zahl-Klassen die entsprechenden mathematischen Operatoren zur Verfügung. Iterationen erfolgen in Ruby über die Operatoren += und -= . Die aus C, Java oder auch PHP bekannten Operatoren ++ und - - gibt es in Ruby nicht:
>> a = 5 => 5 >> b = 10 => 10 >> c = a + b => 15 >> d = b - a => 5 >> e = a / b => 0 >> f = 5.0 / b => 0.5 >> g = a * b => 50 >> h = b ** a => 100000 >> a += 1 => 6 >> b -= 1 => 9
Integer
Die beiden Klassen Fixnum und Bignum erben von der Klasse Integer, die sehr hilfreiche Methoden zur Verfügung stellt, um Wiederholungen realisieren zu können:
>> 3.times { puts "beispiel" } beispiel beispiel beispiel => 3 >> 1.upto(3) { |i| puts i } 1 2 3 => 1 >> 3.downto(1) { |i| puts i } 3 2 1 => 3 >> 0.step(10,2) { |i| puts i } 0 2 4 6 8 10 => 0
Float
Fließkommazahlen sind vom Typ Float . Jede Fließkommazahl, auch eine Konstante, enthält einen Dezimalpunkt:
>> zahl = 5.0 => 5.0 >> zahl.class => Float >> zahl = 5 => 5 >> zahl.class => Fixnum
Wie auch in anderen Programmiersprachen, unterliegen Berechnungen mit Fließkommazahlen in Ruby Rundungsfehlern. Für exakte Berechnungen empfiehlt sich die Verwendung der Klasse BigFloat.
Umwandlungen
Sowohl Ganzzahlen als auch Fließkommazahlen können mit der Methode to_s in eine Zeichenkette vom Typ String umgewandelt werden:
>> zahl = 1.5 => 1.5 >> zahl.to_s => "1.5" >> zahl = 5 => 5 >> zahl.to_s => "5"
Aber auch der umgekehrte Weg ist möglich. Mit der Methode to_i lässt sich zum Beispiel eine numerische Zeichenkette in eine Zahl vom Typ Integer umwandeln. Für die Umwandlung in eine Fließkommazahl kommt die Methode to_f zum Einsatz.
Enthält die numerische Zeichenkette Zeichen, die keine Zahlen sind, gibt die verwendete Konvertierungsmethode die Zahl bis zu diesem Zeichen zurück. Befindet sich ein solches Zeichen am Anfang einer Zeichenkette, wird 0 zurückgeliefert:
>> "500".to_i => 500 >> "5.0".to_f => 5.0 >> "10 Apfelsinen kosten".to_i => 10 >> "13.50 EUR".to_f => 13.5 >> "EUR 13.50".to_f => 0.0 >> "$10 Apfelsinen".to_i => 0
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.