Dziwne liczenie w c++

0

Wiadomo, jak masz liczbe zmiennoprzecinkową i dodajesz/odejmujesz/dzielisz itd. z całkowitą to wynik będzie zmiennoprzecinkowy.
To dlaczego 19/60 to 0 anie 0.31? Niczym sie to nie różni od pierwszego działania gdzie już przecinek się pojawia. Poza tym zadanie z prata rozdzial 3. Mialo miejsce to samo zachowanie jak tu, dlatego pytam.

#include <iostream>

using namespace std;

int main()
{
    {
    int x;
    double y;
    x = 70;
    y = x / 1.123;

    cout << y;
    }
/////////////////////////////////////// w powyzszym wynik double  WYNIK 62.333
    {
    int x;
    double y;
    x = 19;
    y = x / 60;
    cout << endl << y;
    }
////////////////////////////////////// w powyzszym wynik 0 (nagle nie double?) WYNIK 0 zamiast 0.31666
    {
    double x;
    double y;
    x = 19;
    y = x / 60;
    cout << endl << y;
    }
////////////////////////////////////// w powyzszym wynik znow double jak w 1 tyle ze 1 i 2 przyklad sie nie roznia WYNIK 0.31666

    return 0;
}

W programie z ksiazki Prata wynik dodawania w kodzie gdzie obie wartosci są dodawane nadal dziwnie działa bo dodając je wychodzi +1 a tu jednak nie..image

6

Wynik działania na dwóch liczbach całkowitych będzie całkowity.

int x;
double y;
x = 19;
y = x / 60;

W linii y = x / 60 przypisujesz do y wynik wyrażenia x / 60. x / 60 to dzielenie int/int, a jego wynikiem jest 0

1

Dziel przez 60.0

1

lub: (y = x) /= 60;

1 użytkowników online, w tym zalogowanych: 0, gości: 1