Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Dzielenie całkowite w Ruby: dlaczego 6 / 4 równa się 1

Okładka posta: Dzielenie całkowite w Ruby: dlaczego 6 / 4 równa się 1
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.

Jak działają tablice w Ruby: praktyczne przykłady each, map, select, inject, reduce, filter_map
28 paź 10:38

Jak działają tablice w Ruby: praktyczne przykłady each, map, select, inject, reduce, filter_map

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Jak działa self, protected i private (Ruby)
28 paź 13:52

Jak działa self, protected i private (Ruby)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
28 paź 14:42

Jak działa &:to_s w Ruby i co to jest Symbol#to_proc

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Co to jest Proc i Lambda w Ruby?
28 paź 15:57

Co to jest Proc i Lambda w Ruby?

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Co się stanie, jeśli wywołasz [1, 2, 3].map(&Person)
29 paź 17:54

Co się stanie, jeśli wywołasz [1, 2, 3].map(&Person)

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Klasa Singleton (eigenclass) w Ruby: co to jest i po co to potrzebne
29 paź 18:29

Klasa Singleton (eigenclass) w Ruby: co to jest i po co to potrzebne

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
==, equal?, eql?, === w Ruby: co sprawdzają i kiedy używać
29 paź 20:47

==, equal?, eql?, === w Ruby: co sprawdzają i kiedy używać

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska
Include, Extend, Prepend w Ruby: jak działają i jaka jest różnica
29 paź 21:20

Include, Extend, Prepend w Ruby: jak działają i jaka jest różnica

Нотатки про Ruby та RoR
Нотатки про Ruby та RoR@kovbaska