INF-y i NAN-y

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# INF-y i NAN-y

Sun
13
May 2007

Liczby zmiennoprzecinkowe typu float czy double mogą przyjmować pewne specjalne wartości, m.in. oznaczające nieskończoność, nazywane -INF i +INF, a osiągalne w C++ za pomocą nagłówka <limits> i wywołania std::numeric_limits<float>::infinity(). Ciekawe jest, że w przeciwieństwie do liczb całkowitych dzielenie zmiennoprzecinkowe przez zero nie powoduje "wywalenia" programu, ale daje w wyniku takie właśnie nieskończoności.

Z mojego doświadczenia wynika, że zachowują się one absolutnie sensownie. -(+INF) daje -INF, -INF jest mniejsze od każdej liczby a +INF jest większe, -INF jest mniejsze od +INF, +INF - 2.f daje +INF, -INF * -2.f daje +INF itd. Zastanawia mnie więc, dlaczego wszyscy tych specjalnych wartości tak się boją, a nikt ich nie stosuje w swoim kodzie? Ostatnio znalazłem na to kolejny przykład - programiści nVidia w swoich przykładowych kodach używają liczby 1e32f jako wartości specjalnej.

Comments | #c++ #math Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2019