fmod - nie rozumiem wyniku - pytanie laika

fmod - nie rozumiem wyniku - pytanie laika
didzni
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 136
0
Kopiuj
double a{30};
double b{1};

while (a<40)
{
    a = a + 0.1;
    cout << fmod(a,b) << endl;
}

Mam wyniki:

Kopiuj
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.42109e-14
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
2.84217e-14
....itd.

Dlaczego nie zero? :-)

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

http://kaczus.ppa.pl/art/liczbyzmiennoprzecinkowe,19.html

1.42109e-14 to ok 0.0000000000000142. Ze względu na niedokładności w reprezentacji 0.1 za każdym razem dodajesz malutki ułamek i funkcji fmod podawana jest liczba minimalnie większa niż 31 (itd)

didzni
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 136
0

Dziękuję za odpowiedź.

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.