Dziwna (?) sytuacja z funkcja pow
Ostatnio zmodyfikowano 2014-10-11 13:18
Geniusz Temat założony przez niniejszego użytkownika |
Dziwna (?) sytuacja z funkcja pow » 2014-10-09 21:35:02 Witam. Natchnąłem się na taką sytuacje podczas pisania programu i nie rozumiem dlaczego zmienna A ma wartość 99 zamiast 100. Mógłby mi to ktoś wytłumaczyć ? #include <iostream> using namespace std;
#include <cmath>
int main() { int A = pow( 10, 2 ); int B = pow( 10.0, 2.0 ); double C = pow( 10, 2 ); double D = pow( 10.0, 2.0 ); cout << A << endl; cout << B << endl; cout << C << endl; cout << D << endl; }
|
|
akwes |
» 2014-10-09 21:40:19 |
|
Geniusz Temat założony przez niniejszego użytkownika |
» 2014-10-09 22:01:12 CodeBlocks 13.12 GNU GCC Czyli to zależy od kompilatora. 99 100 100 100
Process returned 0 (0x0) execution time : 0.953 s Press any key to continue.
|
|
akwes |
» 2014-10-09 22:04:26 Z ciekawości zapytam, jaki system? Linux? |
|
Geniusz Temat założony przez niniejszego użytkownika |
» 2014-10-09 22:06:13 Windows XP |
|
akwes |
» 2014-10-09 22:09:35 Znalazłem, że było na to kilka bugów w glibc (czyli bibliotece dostarczającej standardowych funkcji)libm. Musisz najprawdopodobniej poszukać po prostu nowej wersji glibclibm (jak to wygląda dla CodeBlocks nie wiem, być może wystarczy pobrać nowszą wersję CB?). |
|
Geniusz Temat założony przez niniejszego użytkownika |
» 2014-10-11 13:18:32 Niesamowite jak zmienienie typu jednej zmiennej w programie z int na double zapobiegło wywalaniu błędu po kompilacji. Wersję CodeBlocks mam najnowszą, z tego co się orientuję. Co do tego libm to nie bardzo wiem skąd mogę to pobrać, żeby mieć pewność, że to jest odpowiednia wersja. |
|
« 1 » |