Antworten:
Es macht eine ganzzahlige Division. Sie können eine der Zahlen a machen, Float
indem Sie Folgendes hinzufügen .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
Antwort ist besser, wenn Sie zwei Variablen teilen, die Ganzzahlen enthalten, z a.to_f / b
. Wenn Sie buchstäblich zwei fest codierte Ganzzahlen teilen (was wahrscheinlich seltsam ist), ist die Verwendung 9.0 / 5
in Ordnung.
Es macht eine ganzzahlige Division. Sie können verwenden to_f
, um Dinge in den Gleitkommamodus zu zwingen:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Dies funktioniert auch, wenn Ihre Werte Variablen anstelle von Literalen sind. Das Konvertieren eines Werts in ein Gleitkomma reicht aus, um den gesamten Ausdruck in Gleitkomma-Arithmetik zu zwingen.
Es gibt auch die Numeric#fdiv
Methode, die Sie stattdessen verwenden können:
9.fdiv(5) #=> 1.8
Sie können das Ruby- mathn
Modul einschließen .
require 'mathn'
Auf diese Weise können Sie die Aufteilung normal vornehmen.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
Auf diese Weise erhalten Sie eine exakte Division (Klasse Rational), bis Sie sich entscheiden, eine Operation anzuwenden, die beispielsweise nicht als rational ausgedrückt werden kann Math.sin
.
Ändern Sie das 5
in 5.0
. Sie erhalten eine ganzzahlige Division.
Fixnum # to_r wird hier nicht erwähnt, es wurde seit Ruby 1.9 eingeführt. Es wandelt Fixnum in eine rationale Form um. Nachfolgend finden Sie Beispiele für seine Verwendung. Dies kann auch eine genaue Unterteilung ergeben, solange alle verwendeten Zahlen Fixnum sind.
a = 1.to_r #=> (1/1)
a = 10.to_r #=> (10/1)
a = a / 3 #=> (10/3)
a = a * 3 #=> (10/1)
a.to_f #=> 10.0
Beispiel, bei dem ein Float, der mit einer rationalen Zahl betrieben wird, das schwebende Ergebnis verdeckt.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
würde einfach das Ergebnis der Berechnung von der Methode zurückgeben, da der letzte Ausdruck in einem Methodenaufruf der Rückgabewert ist.