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

[C++]Wynik inny po rzutowaniu z double na int

Ostatnio zmodyfikowano 2016-08-18 09:05
Autor Wiadomość
ScuroGuardiano
Temat założony przez niniejszego użytkownika
[C++]Wynik inny po rzutowaniu z double na int
» 2016-08-18 03:06:08
Witam, pisząc pewną funkcję zauważyłem coś dziwnego i nie mam pojęcia co jest tego przyczyną.
Mnożąc dowolną liczbę przez (1 - 0.x) i rzutowaniu wyniku na int wychodzi liczba o 1 mniejsza niż powinna.
Kod:
C/C++
#include <iostream>

using namespace std;

int main()
{
   
    double z = 1000 *( 1 - 0.9 );
    int wynik =( int ) z;
   
    cout << z << endl;
    cout << wynik << endl;
   
    cin.get();
    return 0;
}

Na wyjściu dostaję:
100
99
Dzieje się to tylko jak występuje działanie 1 - 0.x i nie mam pojęcia dlaczego.
Da się jakoś to napisać, żeby po rzutowaniu na inta wynik wychodził poprawny?
P-150963
carlosmay
» 2016-08-18 06:44:56
C/C++
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
   
    double z = 1000.0 *( 1 - 0.9 );
    int wynik = static_cast < int >( z );
   
    cout << fixed << setprecision( 30 ) << z << endl;
    cout << wynik << endl;
   
    return 0;
}
P-150967
ScuroGuardiano
Temat założony przez niniejszego użytkownika
» 2016-08-18 08:44:31
99.999999999999971578290569595993 :o Dziwne to...
Dzięki za pomoc, zaokrąglę w górę i będzie okey :D
P-150969
carlosmay
» 2016-08-18 09:05:53
Poczytaj o niedokładności liczb zmiennoprzecinkowych.
P-150970
« 1 »
  Strona 1 z 1