Odpowiedzi:
Robi podział na liczby całkowite. Możesz zrobić jedną z liczb a Float
, dodając .0
:
9.0 / 5 #=> 1.8
9 / 5.0 #=> 1.8
.to_f
Odpowiedź brzmi lepiej jeśli dzieląc dwie zmienne, które zawierają liczby całkowite, np a.to_f / b
. Jeśli dosłownie dzielisz dwie zakodowane liczby całkowite (co jest prawdopodobnie dziwne), użycie 9.0 / 5
jest w porządku.
Robi podział na liczby całkowite. Możesz użyć, to_f
aby wymusić przejście w tryb zmiennoprzecinkowy:
9.to_f / 5 #=> 1.8
9 / 5.to_f #=> 1.8
Działa to również, jeśli twoje wartości są zmiennymi zamiast literałów. Konwersja jednej wartości na liczbę zmiennoprzecinkową jest wystarczająca, aby przekonać całe wyrażenie do arytmetyki zmiennoprzecinkowej.
Istnieje również Numeric#fdiv
metoda, której możesz użyć zamiast tego:
9.fdiv(5) #=> 1.8
Możesz dołączyć mathn
moduł ruby .
require 'mathn'
W ten sposób będziesz mógł normalnie dokonać podziału.
1/2 #=> (1/2)
(1/2) ** 3 #=> (1/8)
1/3*3 #=> 1
Math.sin(1/2) #=> 0.479425538604203
W ten sposób otrzymujesz dokładny podział (klasa wymierna), dopóki nie zdecydujesz się zastosować operacji, która nie może być wyrażona na przykład jako wymierna Math.sin
.
Zmień 5
TO 5.0
. Otrzymujesz podział na liczby całkowite.
Fixnum # to_r nie jest tutaj wymienione, zostało wprowadzone od wersji Ruby 1.9. Przekształca Fixnum w racjonalną formę. Poniżej znajdują się przykłady jego zastosowań. Może to również dać dokładny podział, o ile wszystkie użyte liczby to Fixnum.
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
Przykład, w którym liczba zmiennoprzecinkowa działająca na liczbie wymiernej obejmuje wynik do liczby zmiennoprzecinkowej.
a = 5.to_r #=> (5/1)
a = a * 5.0 #=> 25.0
def method; a - b/8; end
zwróci wynik obliczenia z metody, ponieważ ostatnim wyrażeniem w wywołaniu metody jest wartość zwracana.