fmod - nie rozumiem wyniku - pytanie laika

0
double a{30};
double b{1};

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

Mam wyniki:

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? :-)

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)

0

Dziękuję za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1