Flagi liczby przy dzieleniu przez 0
Ostatnio zmodyfikowano 2015-10-17 12:54
Elaine |
» 2015-10-02 15:36:00 Disclaimer: to, co tu piszę, dotyczy IEEE 754 (ale w praktyce większość platform, z którymi miałem do czynienia, albo używa IEEE 754, albo nie ma liczb zmiennoprzecinkowych w ogóle). Taka liczba o ile pamiętam po wypisaniu przez std::cout przyjmie wartość #INF albo NaN (Not a Number), już nie pamiętam którą dokładnie. |
Dzielenie liczby dodatniej przez zero daje dodatnią nieskończoność. Dzielenie tylko zera przez zero da NaN. Jeżeli taki float zajmuje 32 bity w pamięci to gdzie znajdują się informacje o np. takim przypadku? |
W samym floacie. Dla dodatniej (ujemnej) nieskończoności bit znaku wynosi 0 (1), wykładnik to same jedynki, a mantysa to same zera. Same jedynki w wykładniku, niezerowa mantysa i dowolny bit znaku to z kolei NaN. Nieskończoności i NaN nie są niczym magicznym, można łatwo je wykryć: const float x = …; if( x != x ) { } else if( x == std::numeric_limits < float >::infinity() ) { } else if( x == - std::numeric_limits < float >::infinity() ) { } else { } |
|
C-Objective |
» 2015-10-17 12:54:21 << removed by pekfos - bardziej nie na temat się nie dało? >> |
|
1 « 2 » |