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_fOdpowiedź 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 / 5jest w porządku.
Robi podział na liczby całkowite. Możesz użyć, to_faby 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#fdivmetoda, której możesz użyć zamiast tego:
9.fdiv(5) #=> 1.8
Możesz dołączyć mathnmoduł 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ń 5TO 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; endzwróci wynik obliczenia z metody, ponieważ ostatnim wyrażeniem w wywołaniu metody jest wartość zwracana.