Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] funkcja pow() z biblioteki math.h raz dziala, a raz nie...

Ostatnio zmodyfikowano 2015-11-09 12:47
Autor Wiadomość
robaczek122
Temat założony przez niniejszego użytkownika
[c++] funkcja pow() z biblioteki math.h raz dziala, a raz nie...
» 2015-11-09 10:36:23
C/C++
#include <iostream>
#include <math.h>

using namespace std;

int main() {
    //nie dziala
    int liczbaDoZwrocenia = 0, i = 0;
    liczbaDoZwrocenia = pow( 10, 2 - i );
    cout << liczbaDoZwrocenia << endl;
   
    //dziala
    liczbaDoZwrocenia = pow( 10, 2 - 0 );
    cout << liczbaDoZwrocenia << endl;
   
    //nie dziala
    int potega = 2;
    liczbaDoZwrocenia = pow( 10, potega );
    cout << liczbaDoZwrocenia << endl;
   
    //to samo co powyzej, ale dziala dla potegi = 1, potegi = 3, ale dla potegi = 2 nie dzial
    potega = 3;
    liczbaDoZwrocenia = pow( 10, potega );
    cout << liczbaDoZwrocenia << endl;
   
    //dziala
    cout << pow( 10, 2 - i ) << endl;
    //dziala
    cout << pow( 10, 2 - 0 ) << endl;
   
   
    return 0;
}

Wynikiem działania 10^2 jest czasami 99, a czasami 100. Powyżej kilka przykładów, w których funkcja działa i nie działa, chociaż czasami nie działa dla 10^x, a działa poprawnie dla 10^(x+1).
P-139840
carlosmay
» 2015-11-09 11:37:34
Program jest napisany poprawnie, prawie.
funkcja działa i nie działa
 Powinien działać (może jakiś błąd kompilatora).
Wynikiem działania 10^2 jest czasami 99, a czasami 100
 funkcja pow() zwraca wrtość typu double , stąd może brać się niedokładność obliczeń.
C/C++
double liczbaDoZwrocenia = 0, i = 0;
liczbaDoZwrocenia = pow( 10, 2 - i );
cout << liczbaDoZwrocenia << endl;
 powinno załatwić sprawę.
P-139842
darko202
» 2015-11-09 12:47:57
używasz funkcji pow - a jest to według referencji na
http://www.cplusplus.com​/reference/cmath/pow/
http://www.cprogramming.com​/fod/pow.html

Prototype: double pow(double b, double p);
 Header File: math.h (C) or cmath (C++)
 Explanation: This function raises b to the p power.

prawdpopdobnie przy rzutowaniu otrzymujesz nieprawidłowe zaokrąglenie
zastosuj funkcję zaokrąglania
http://cpp0x.pl/dokumentacja​/standard-C/Zaokraglanie-liczb​/26

i ewentualnie rzutowania do int
P-139844
« 1 »
  Strona 1 z 1