Liczby zmiennoprzecinkowe - problemy z wynikami
Ostatnio zmodyfikowano 2011-07-16 14:19
snuffy Temat założony przez niniejszego użytkownika |
Liczby zmiennoprzecinkowe - problemy z wynikami » 2011-07-16 13:27:54 Witam. Otóż bawie się troche pętlami i zrobiłem taki oto przykład
#include <iostream> int main() { double k = 0.1; std::cout << "Liczenie do 1. \n"; while( k < 1.1 ) { std::cout << k << "\n"; k = k + 0.1; } }
Po kompilacji program uruchamia sie , wszystko jest ok ale czemu pokazuje on liczbe 1.1 . Przecież w warunku pętli napisałem że liczba ma być mniejsza właśnie od tej. Troche tego nie rozumiem. Co ciekawe kiedy zmienie typ zmiennej na int i zrobie to samo na liczbach całkowitych to wszystko jest dobrze. Może mi ktoś to wyjaśnić :P ? Z góry dzięki za pomoc. |
|
yoogi |
» 2011-07-16 13:33:12 |
|
snuffy Temat założony przez niniejszego użytkownika |
» 2011-07-16 13:39:20 No działa ale jak napisze tak : to też działa a nie powinno chyba. I tego wlasnie nie rozumiem. |
|
malan |
» 2011-07-16 13:47:20 Dlaczego nie powinno? |
|
snuffy Temat założony przez niniejszego użytkownika |
» 2011-07-16 13:50:14 Bo chyba pisząc tak jak wyżej to oczekuje że wypisze liczby do 0.9 i na tym skończy , a wypisuje do 1 włącznie. To według mnie jest dziwne i zabardzo tego nie rozumiem. Chyba że ja coś pomieszałem :P |
|
m4tx |
» 2011-07-16 13:52:08 Nie znam rozwiązania problemu, ale mam 2 sugestie: Zamiast "\n" możesz pisać std::endl . Zamiast k = k + 0.1 wystarczy k += 0.1 . |
|
malan |
» 2011-07-16 13:56:26 Nie doczytałem Twojej wiadomości. Już wiem o co Ci chodzi. Masz rację, to jest dziwne. Rzekłbym, iż nawet bardzo dziwne. Zwłaszcza, że dzieję się tak tylko dla 1.1 . Cóż, widocznie 1.1 w C++ jest liczbą magiczną, która ma dodatkowe przywileje. Nie wnikajmy w tajniki mocy :) |
|
snuffy Temat założony przez niniejszego użytkownika |
» 2011-07-16 13:58:33 Ok to dzięki wszystkim za odpowiedzi :P |
|
« 1 » 2 |