Zaokrąglenia w double a wartość 0.0

0

Hey, mam pytanko czysto teoretyczne: czy możliwe jest, że mając liczbę typu double, np.

double variable;

i wpisując do niej wartość 0 lub 0.0 tj.

variable = 0.0;

a następnie sprawdzając następujący warunek

if(variable)

otrzymam wartość true?

Chodzi mi oczywiście o kwestię zaokrągleń etc. które w mojej ocenie w tym przypadku nie powinny wystąpić. Z góry dzięki za rozjaśnienie moich wątpliwości.

sformatowanie znaczników <code> - fp

1

Owszem, błędy w zaokrągleniu są, ale bez przesady. Takiej sytuacji nie będzie. Przecież potrafimy wyrazić dokładnie 0 w systemie binarnym na liczbie bitow, ktore ma double.

1

Jeżeli wpisujesz tak jak pokazałeś to nie ma mowy by wyszło true.

1

Dla zera nie ma żadnego zaokrąglenia. Zero to zero. Wszystkie liczby całkowite od -2<sup>{53} do 2</sup>{53} w double (zgodnym z IEEE 754) są reprezentowane dokładnie.

0

Dzięki wszystkim za potwierdzenie, pytałem dla pewności, bo ostatnio się dowiedziałem, że w świecie double (dla zmiennych double A,B, C) nawet operacje typu: A + B + C mogą być różne niż dla A + C + B! Chociaż po głębszym zastanowieniu doszedłem do wniosku, że rzeczywiście jest to możliwe...

1

Zależy od liczb jakie są dodawane - powinno się posortować liczby od najmniejszej do największej i dopiero je sumować tak, aby zaokrąglenia nie nakładały się na siebie.
Opisane jest to np. na wiki http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa "Operacje na liczbach zmiennoprzecinkowych"

1 użytkowników online, w tym zalogowanych: 0, gości: 1