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