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

Flagi liczby przy dzieleniu przez 0

Ostatnio zmodyfikowano 2015-10-17 12:54
Autor Wiadomość
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ć:
C/C++
const float x = ;
if( x != x ) {
    // NaN
}
else if( x == std::numeric_limits < float >::infinity() ) {
    // dodatnia nieskończoność
}
else if( x == - std::numeric_limits < float >::infinity() ) {
    // ujemna nieskończoność
}
else {
    // liczba skończona
}
P-138118
C-Objective
» 2015-10-17 12:54:21
<< removed by pekfos - bardziej nie na temat się nie dało? >>
P-138713
1 « 2 »
Poprzednia strona Strona 2 z 2