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ść
akwes
» 2011-07-16 14:19:22
C/C++
float a = 1.1;
double b = 1.1;
if( a == b ) std::cout << "TAK!";
else std::cout << "NIE!";


i cały kod dla leniwych

C/C++
#include <iostream>
#include <conio.h>
int main()
{
    float a = 1.1;
    double b = 1.1;
    if( a == b ) std::cout << "TAK!";
    else std::cout << "NIE!";
   
    getch();
}

wartość 1.1 się za chama nie da ładnie zaprezentować w hex, więc kompilator ma problem albo robi coś w stylu 1.10000000000000000000000001, czyli wylicza najbardziej możliwą dla siebie przybliżoną wartość (tak mi się wydaje) a że zakresy float i double są różne jeśli chodzi o ilość miejsc po przecinku to i 1.1 wygląda różnie.

1.0001 != 1.000001

cool story:
Pamiętam jak na UTK nas męczyli przeliczaniem liczb, więc ja napisałem program, który robił to za mnie i robił ładny plik *.txt do wydruku.
Część liczb w ułamkach po prostu się nie dała zapisać binarnie, pamiętam że właśnie wtedy dałem programowi ograniczenie do 500 przejść... Hm... Niektórzy mieli ambicje dojść do końca i robili to ręcznie ale przy 30 padali :)
P-36078
1 « 2 »
Poprzednia strona Strona 2 z 2