Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ zmienne, różne wyniki

Rafal10202 08 Sty 2014 11:39 621 3
  • #1 08 Sty 2014 11:39
    Rafal10202
    Poziom 9  

    Witam,
    piszę w związku z tym, że nie znam wytłumaczenia na nurtujące mnie zagadnienie, dotyczy ono zmiennych w C++, otóż mam taki kod:
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    #include <math.h>


    int main()

    { int n;
    int t=50000;
    n=256-(((11.0592/12)*t)/256) ;
    cout<<"wynik "<<n;
    getch ();
    return 0;


    }
    i teraz tak gdy n jest jako int wynik to 75, a gdy zdefiniuje jako float to wynik wynosi 76, czemu? (((11.0592/12)*t)/256) wynik tego to 180.
    Przecież zarówno 76 i 75 to liczby całkowite więc dlaczego z float działa poprawnie?

    0 3
  • #2 08 Sty 2014 12:22
    Michał 911
    Poziom 18  

    Ponieważ int w czasie obliczeń jest zaokrąglany do liczb całkowitych. Rozbij sobie to działanie tak, żeby w każdym z działani nie wychodziło np. 345,1237 tylko np. 345123,7 i na koniec podziel to odpowiednio.

    0
  • #3 08 Sty 2014 12:37
    Rafal10202
    Poziom 9  

    ale w tym działaniu co przedstawiłem wychodzi liczba całkowita, a tylko od typu zmiennej zależy wynik :/

    0
  • #4 08 Sty 2014 13:11
    braciszek0
    Poziom 12  

    Rafal10202 napisał:
    11.0592

    to nie jest liczba całkowita :)

    Michał 911 napisał:
    int w czasie obliczeń jest zaokrąglany do liczb całkowitych


    i tu masz odpowiedź :)

    float Słowa kluczowego oznacza typu prostego, który przechowuje wartości zmiennoprzecinkowych 32-bitowych.
    int Słowa kluczowego oznacza typem całkowitym

    np w C#
    Na przykład następująca instrukcja generuje błąd kompilatora, chyba że jest używane jawne rzutowania:

    int x = 3.0; // Error: no implicit conversion from double.

    0