[C++]Wynik inny po rzutowaniu z double na int
Ostatnio zmodyfikowano 2016-08-18 09:05
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: #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? |
|
carlosmay |
» 2016-08-18 06:44:56 #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; } |
|
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 |
|
carlosmay |
» 2016-08-18 09:05:53 Poczytaj o niedokładności liczb zmiennoprzecinkowych. |
|
« 1 » |