Dziwne liczenie w c++

Dziwne liczenie w c++
NK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 29
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.

Kopiuj
#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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
6

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

Kopiuj
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

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
1

Dziel przez 60.0

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

lub: (y = x) /= 60;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.