Chciałem użyć w obliczeniach liczby 2/3 i napotkałem problem - podczas obliczania, ułamki okresowe zawsze przyjmują wartość 0. Z tego jak co zauważyłem, tyczy się to nie tylko C#, ale i wszystkich języków z rodziny C;/
Jakieś rady?
Coś źle robisz, bo to jest nieprawda, że ułamki okresowe przyjmują zawsze zero
double z = 2/3 - debuger pokazuje wartość z = 0
Console.WriteLine(2/3) - również uzyskuje 0
double z = 2.0/3
O dziwo działa:)
Dziękuje za szybką odpowiedź
Er napisał(a)
double z = 2/3 - debuger pokazuje wartość z = 0
Dzieląc dwie liczby całkowite otrzymujesz całkowity wynik, nie ma w tym żadnego błędu.
O dziwo działa
Gdy dzielisz liczby rzeczywiste, to w wyniku możesz mieć ułamek. Co w tym dziwnego?
Co w tym dziwnego?
że nie wszystkie języki programowania są takie dziwne, że 2/3 wynosi 0 :-)
Przykładowo w Delphi dzielenie zawsze daje wynik rzeczywisty. Ale w zamian pojawiają się pytania, dlaczego wyniku 4/2 nie można przypisać do zmiennej całkowitej...
Oba podejścia są w zasadzie równoważne.
W zbiorze liczb całkowitych nie ma ułamków, więc działanie na liczbach całkowitych (np. 2/3) nie ma prawa zwrócić ułamka. Matematyka nie jest zależna od języka programowania.
A, że Delphi nie uznaje praw matematyki, to kolejny argument, żeby go nie używać.