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

Rzutowanie do int po potęgowaniu pow(a,b)

Ostatnio zmodyfikowano 2016-09-17 21:40
Autor Wiadomość
Shkekled
Temat założony przez niniejszego użytkownika
Rzutowanie do int po potęgowaniu pow(a,b)
» 2016-09-17 12:48:40
C/C++
#include <iostream>
#include <cmath>

int main()
{
    int a;
    int b;
   
    std::cin >> a;
    std::cin >> b;
   
    std::cout << "pow(a,b)=" << std::pow( a, b ) << '\n';
}
Jak wpiszę w a=10 i w b=10, to wyskakuje mi: 1e+010?

Jak to naprawić?
P-151776
mateczek
» 2016-09-17 13:18:43
C/C++
#include <iostream>
#include <cmath>

int main()
{
    int a;
    int b;
   
    std::cin >> a;
    std::cin >> b;
   
    std::cout << std::fixed << "pow(a,b)=" << std::pow( a, b ) << '\n';
    int c = pow( a, b );
    std::cout << c << '\n';
}
P-151777
kistel66
» 2016-09-17 13:39:19
Albo dodać
#include <iomanip>
 a przed wyświetleniem wiadomości:
cout << setprecision( x )
W miejsce x wpisujesz ile miejsc po przecinku chcesz mieć
P-151778
karambaHZP
» 2016-09-17 13:51:33
Albo dodać
#include <iomanip>
  a przed wyświetleniem wiadomości:
cout << setprecision( x )
 W miejsce x wpisujesz ile miejsc po przecinku chcesz mieć
Sprawdziłeś jaki będzie wynik czegoś takiego?
C/C++
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;

int main()
{
    cout << setprecision( 2 ) << pow( 10, 10 ) << '\n';
}

fixed
 i tak jest potrzebne.
P-151779
Shkekled
Temat założony przez niniejszego użytkownika
» 2016-09-17 14:35:47
Mateczek napisał błędny kod. Nadal po tym, źle liczy.
P-151780
mateczek
» 2016-09-17 16:09:44
Co konkretnie źle liczy ?? jak przekraczasz zakres zmiennych to jest normalne że źle liczy.
Jak wielkie liczby chcesz potęgować ??
long long ci wystarcza??
C/C++
#include <iostream>
#include<cmath>
using namespace std;
unsigned long long pow_int( int podst, int wykl ) {
    unsigned long long wynik = 1;
    for( int i = 0; i < wykl; i++ ) {
        wynik *= podst;
    }
    return wynik;
}
int main()
{
    cout << pow_int( 2, 3 ) << endl;
    cout << fixed << pow( 2, 3 ) << endl;
    long long c = pow( 2, 3 );
    cout << c << endl;
}
P-151781
Piastlis
» 2016-09-17 21:15:05
Co tu źle działa? 10^10 to dokładnie 1e10...
P-151790
mateczek
» 2016-09-17 21:40:22
pewnie mu się liczby w zakresy nie mieszczą i dlatego
double fajnie policzy ale jak przekroczy zakres to mu mantysę obetnie przybliży do wymaganej długości. Wystarczy zobaczyć ten program
C/C++
#include <iostream>
using namespace std;

int main()
{
    double wynik = 1;
    unsigned long long wynik2 = 1;
    for( int i = 0; i < 19; i++ ) {
        wynik *= 11;
        wynik2 *= 11;
        if( i == 15 ) cout << "tu sie posypal zakres double " << endl;
       
        if( i == 18 ) cout << "tu sie posypal zakres unsignded long long - brak jedynki na koncu wyniku " << endl;
       
        cout << fixed << wynik << "\n" << wynik2 << "\n" << endl;
    }
}
i o ile long long wysiada po i =18 definitywnie o tyle double można używać dalej jak się zaakceptuje przybliżenia wyniku
P-151791
« 1 »
  Strona 1 z 1