C++ błędne wyświetlanie liczbe.

C++ błędne wyświetlanie liczbe.
S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Witam.

Mam taki problem. Wczytuje do dwóch zmiennych typu float następujące liczby: 8.22 i 2.88.
Jednak gdy chce je wyświetlić na ekranie z precyzją do 10 miejsc po przecinku
( cout.precision() ) to otrzymuje coś takiego:

8.220000267
2.8800001144

Wie ktoś może czym takie przekłamanie jest spowodowane i ewentualnie w jaki sposób można się go pozbyć ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

To są okresowe ułamki binarne, stąd takie przekłamania. Tak jak w systemie dziesiętnym nie da rady zapisać 1/3, bo zawsze będzie to jakieś 0.3333333334 tak samo nie da rady tych liczb zapisać binarnie.

S1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Czyli nie ma na to żadnego rozwiązania i musi tak zostać ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.