また、ゼロもEXP=0で、かつ、Fractionが全てゼロと定義されている。ゼロは符号Sが"0"と"1"の形があり、それぞれ+0と-0を表わす。+0と-0は通常は区別する必要は殆ど無いが、符号を取り出すような演算では違いがでる。

無限大とNaN

そして、EXPの最大値である単精度の場合はEXP=255、倍精度の場合はEXP=1023も特別なデータを表わしている。Fractionが全てゼロの場合は、無限大を表わし、符号Sが"0"の場合は正の無限大、"1"の場合は、負の無限大である。つまり、正規の数で表現できる数の上に、更に、無限大(という数値?)が記述できる。

そして、Fractionにゼロでない値が入っている場合は、非数(Not a Numberの略でNaNと書かれる)を表わす。このNaNは、ナンと発音される。NaNは0.0÷0.0や?÷?、0.0×?などの数値としては表現できない演算結果を生成するケースで出力される。また、入力としてNaNを含む加減乗除の演算の結果もNaNとなる。従って、計算過程のどこかでこのような異常な計算が起こったことを、最終結果を見るだけで効率よく検出することが出来る。

また、メモリを確保した領域の初期状態としてNaNで埋めておけば、データを書き込まないでそのデータを使ってしまっているというようなプログラム上のバグを容易に発見できるという使い方もできる。

NaNには、単にNaNが伝搬していくだけのquiet NaN(静かなNaN、qNaNと書かれる)と、それが入力に現れると、トラップを発生するsignaling NaN(信号を発生するNaN、sNaNと書かれる)がある。

例外の記録と割り込みの発生

IEEE 754規格には、各種の異常な演算を検出して、OSに割り込みをあげるトラップ条件が規定されている。最初にNaNを生成する0.0×?などの演算が行われるとINVALIDオペレーションとなり、その他にDIVIDE BY 0、オーバーフロー、アンダーフローなどが発生するとトラップする。また、前述のように、演算の入力としてsNaNが出現するとトラップが発生する。

このようなエラーが発生した場合に、OSに割り込むと性能が大幅に低下するので、マイクロプロセサでは、OSに割り込みを行わず、発生したトラップの原因だけを記憶しておき、後で参照して適切な処置をとることができるような設計になっているのが普通である。例えば、IntelのIA32アーキテクチャでは、6種のトラップ発生を示すビットのそれぞれに対応するマスクビットが付けられており、セットされたマスクビットに対応するトラップが発生しても、OSには割り込まない。しかし、トラップ発生を示す6ビットのフラグはクリアされず、その後発生したトラップに対応するフラグビットがORされて残るようになっている。従って、計算過程ではマスクビットをセットしてトラップ発生をマスクし、計算が終了した時点でフラグビットを見ると、トラップを発生するような異常な計算の有無が分かるので、異常がなければ処理を続け、異常があった場合には適切な処置をとることができる。

IEEE754規格の拡張

IEEE754規格は、前述のように1985年の制定であり、既に制定から20年あまりが経過している。もちろん、問題が無ければ変える必要は無いのであるが、最近、IEEEでは、IEEE754rと呼ばれる規格の検討が進行している。改訂の大きな特徴は、積和演算の追加、128ビット長の4倍精度浮動小数点演算の追加と、10進浮動小数点演算の追加である。また、オリジナルのIEEE754で曖昧な点についても、厳密な定義を行うと言われている。

IEEE754rは、現在は、まだ、ドラフトの段階であり、規格にはなっていないが、IBMのPOWER6プロセサでは、このドラフトに基づく10進浮動小数点演算機能が実装されるなど、既に採用の動きがある。