Hej, może ktoś wytłumaczyć dlaczego wynik działania 3.50 - 2.45 = 1.0499999999999998, gdzie wszystkie znaki na niebie mówią że musi być 1.05
ruby 2.3.4p301 (2017-03-30 revision 58214)
Rails 4.2.7.1
Pozdrowionka
Hej, może ktoś wytłumaczyć dlaczego wynik działania 3.50 - 2.45 = 1.0499999999999998, gdzie wszystkie znaki na niebie mówią że musi być 1.05
ruby 2.3.4p301 (2017-03-30 revision 58214)
Rails 4.2.7.1
Pozdrowionka
Przekonwertuj do BigDecimal jesli wykonujesz jakies dzialania i potem znow do float jesli chcesz zapisac w bazie.
(BigDecimal.new(3.5.to_s) - BigDecimal.new(2.45.to_s)).to_f
lub
(BigDecimal.new(3.5, 3) - BigDecimal.new(2.45, 3)).to_f
W uproszczeniu probllem polega na tym ze dzialania na flaot tak naprawde są wykonywane na reprezentacjach tych liczb w integer. Nie wszystkie liczby typu float mają dokładną reprezentacje w int stąd są zaokrąglane. BigDecimal to klasa która pomaga rozwiązać ten problem.
Studia informatyczne jednak są potrzebne
Wystarczyłby kurs, na którym są podstawy informatyki. Po co od razu studia.