Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
W Ruby, gdy dzielisz dwie liczby całkowite (Integer), wynik również będzie liczbą całkowitą. Dlatego:
6 / 4
zwraca 1, a nie 1.5. Ruby po prostu odrzuca część ułamkową - to tzw. dzielenie całkowite.
Dlaczego tak się dzieje
- 6 i 4 - oba obiekty klasy Integer.
- Operator / między dwoma liczbami całkowitymi zwraca Integer, obcinając część dziesiętną.
6.class # => Integer 4.class # => Integer 6 / 4 # => 1
Jak uzyskać poprawny wynik z częścią dziesiętną
Jest kilka opcji. Rozważmy je po kolei.
Jak uzyskać poprawny wynik z częścią dziesiętną:
6.0 / 4 # => 1.5 6 / 4.0 # => 1.5
Użyj metody fdiv. Metoda fdiv wykonuje dzielenie i zawsze zwraca Float, nawet jeśli obie liczby są całkowite. To wygodne, gdy potrzebujesz dokładnego dzielenia ułamkowego bez jawnej konwersji typu.
6.fdiv(4) # => 1.5
Jawna konwersja typu (to_f). Metoda to_f konwertuje liczbę na Float. Po tym dzielenie automatycznie wykonuje się jak z liczbami zmiennoprzecinkowymi, a wynik również będzie Float. Można również konwertować dzielnik.
6.to_f / 4 # => 1.5
Krótko mówiąc:Dzielenie całkowite (Integer / Integer) obcina część ułamkową.Aby uzyskać liczbę zmiennoprzecinkową (Float), należy:
- użyć Float w dzieleniu (6.0 / 4)
- lub metody fdiv (6.fdiv(4))
Jeszcze kilka przykładów:
# Dzielenie całkowite p 7 / 2 # => 3 # Dzielenie z Float p 7.0 / 2 # => 3.5 p 7 / 2.0 # => 3.5 p 7.fdiv(2) # => 3.5 p 7.to_f / 2 # => 3.5
Ten post nie ma jeszcze żadnych dodatków od autora.