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

Liczby zmiennoprzecinkowe - problemy z wynikami

Ostatnio zmodyfikowano 2011-07-16 14:19
Autor Wiadomość
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
C/C++
#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.
P-36068
yoogi
» 2011-07-16 13:33:12
Napisz
while( k <= 1.0 )
P-36069
snuffy
Temat założony przez niniejszego użytkownika
» 2011-07-16 13:39:20
No działa ale jak napisze tak :
C/C++
while( k < 1.0 )
to też działa a nie powinno chyba. I tego wlasnie nie rozumiem.
P-36070
malan
» 2011-07-16 13:47:20
Dlaczego nie powinno?
P-36071
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
P-36072
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
.
P-36073
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 :)
P-36074
snuffy
Temat założony przez niniejszego użytkownika
» 2011-07-16 13:58:33
Ok to dzięki wszystkim za odpowiedzi :P
P-36075
« 1 » 2
  Strona 1 z 2 Następna strona