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

Typ danych używany przy wypisywaniu do strumieniu wyjścia

Ostatnio zmodyfikowano 2016-05-27 17:58
Autor Wiadomość
erde
Temat założony przez niniejszego użytkownika
Typ danych używany przy wypisywaniu do strumieniu wyjścia
» 2016-05-27 17:50:16
Witam serdecznie, ucząc się podstaw natknąłem się na coś czego nie rozumiem do końca.

Program ma wypisać objętość kuli na ekran.

C/C++
int main()
{
    float r = 1;
    cout << "Objetosc kuli to: " << M_PI * pow( r, 3 ) * 4 / 3 << endl;
}
Kiedy kod wygląda tak to wszystko jest wporządku, otrzymuje w konsoli wartość prawidłową;

C/C++
float r = 1;
cout << "Objetosc kuli to: " << M_PI * pow( r, 3 ) *( 4 / 3 ) << endl;

Jeżeli ujmę wartość 4/3 w nawias wartość ta zostaje zaokrąglona do 1 i otrzymuje wynik nieprawidłowy.

C/C++
int main()
{
    cout << 4 / 3;
}

Wypisanie w ten sposób samego ułamka również zaokrągla wynik.

C/C++
int main()
{
    cout <<( double ) 4 / 3;
}

Rzutowanie w stylu C daje oczekiwany rezultat.

C/C++
int main()
{
    float r = 1;
    cout << "Objetosc kuli to: " << 4 / 3 * M_PI * pow( r, 3 ) << endl;
}
Tak kod wyglądał na samym początku, chociaż forma zapisu ułamka jest taka sama to umieszczenie jej na początku również zaokrągla mój wynik.

Czy ma to związek z kolejnością wykonywania operatorów? Bo już się pogubiłem.


Problem doraźnie jak widać jakoś rozwiązałem chociaż chwile zajęło mi zrozumienie czemu moje obliczenie objętości nie działa.
Chciałbym natomiast dowiedzieć się jaka jest natura tego zjawiska, bo wychodzi na to że czegoś tu dokładnie nie rozumiem.
Zdaje sobie sprawę że problem trywialny więc proszę o wyrozumiałość.

Pozdrawiam serdecznie i z góry dziękuje za pomoc
P-148621
carlosmay
» 2016-05-27 17:58:51
( 4 / 3.0 )
Jeden z operandów musi być typu zmiennoprzecikowego. W tym wypadku
double
.

Edit:
Chciałbym natomiast dowiedzieć się jaka jest natura tego zjawiska, bo wychodzi na to że czegoś tu dokładnie nie rozumiem.
Dzielnie dwóch liczb całkowitych promuje wynik do liczby całkowitej, odrzucając część ułamkową (zaokroglanie w dół).
P-148622
« 1 »
  Strona 1 z 1