IEEE 754

拡張精度形式

算術その他の演算で使用される形式は、符号化したときのものと一致していなくても構わない（つまり、実装は、内部で異なる表現を使用してもよい）。
この標準では、精度（有効桁数）を拡張した形式を示し、基本形式よりも精度を高くすることを推奨している。拡張精度 (extended precision) 形式は、仮数部と指数部の桁数（ビット数）を基本形式よりも大きくしたものである。拡張可能精度 (extendable precision) 形式では、ユーザーが仮数部の桁数と指数部の範囲を指定できる。これらを内部の表現として実装することができる。ただし、そのような内部形式も、有限数の表現できる集合が定められるようパラメータ (b, p, emax) はきちんと定義されている必要がある。
また、この標準は拡張（可能）精度形式の実装を要求してはいない。
この標準では、言語がサポートしているそれぞれの基数 b について p と emax を指定する方法を提供することを推奨している。
また、拡張形式をサポートする場合は、サポートしているそれぞれの基数 b について最大の基本形式よりも高い精度をサポートすることを推奨している。
2つの基本形式の中間の精度の拡張形式の場合、大きい方の基本形式と同じかそれ以上の指数範囲を持たなければならない。したがって例えば64ビットの拡張精度二進形式なら、emax は16383以上でなければならない。Intel 8087 の80ビット拡張形式はこの要求を満たしている（binary128と指数の範囲が等しい）。

交換形式

交換形式は固定長のビット列での浮動小数点数の交換や記録を意図した形式である。
二進浮動小数点数用に、16/32/64ビットならびに32の倍数で128ビット以上の交換形式が定義されている。16ビット形式（半精度）は、グラフィック用途など小さな値の交換または記憶に用いることが想定されている。
二進交換形式の符号化方式は IEEE 754-1985 から変わっていない。先頭に符号ビット1ビットがあり、それに w ビットの「バイアス」された指数部が続き、さらに p−1 ビットの仮数部が続く。全体で k ビットの形式の場合、指数部のビット数は w = floor(4 log2(k))−13 で得られる。ただし、64ビットと128ビットの形式ではこれで正しいが、16ビットと32ビットの形式ではこの式で得られる値（それぞれ3と7）より多くのビットが指数部に割り当てられている（それぞれ5と8）。

ここでのビットの示し方について

Wビットの幅を持つワードがある場合、整数でビットに番号を振る。その番号の範囲は0 − W−1 であり、0番のビットが右端となる。0番のビットは一般にLSBである。

64ビット倍精度の交換形式

倍精度も、各フィールドの幅が広くなっているだけで、考え方は同じである。
正規化数では、指数はemax = +1023でバイアスされる（したがってeは exponent − 1023）。正規化数の指数は e: +1023 〜 −1022（exponent: 2046 〜 1）である（exponent = 2047 の時無限大またはNaN、exponent = 0 の時非正規化数で e = −1022）。正規化数の時仮数部はけち表現である。

半精度と四倍精度の交換形式

半精度の交換形式は次のようになる。
また、四倍精度の交換形式は次のようになる。

浮動小数点数の比較

浮動小数点数の比較は浮動小数点命令を使うのが最良である。しかし、形式やエンディアンや符号が同じであれば、数値をビット列としてバイト単位に比較することも不可能ではない（NaNは除く）。
ふたつの正の数値aとbについてa < bという比較を行う場合、これを符号無しの整数と見なして比較しても同じ結果を得られる。換言すれば、（NaN以外の）2つの正の浮動小数点数は符号無し整数として比較できる（ただし、エンディアンが異なる場合は比較できないので、移植性が問題となるコードで共用体を使ってこれをするのは推奨できない）。これは辞書式順序の例である。

十進浮動小数点数の交換形式

十進浮動小数点数に対しては、32の倍数のビット数での交換形式が定義されている。
二進の場合と同様、符号、指数、仮数と符号化していくが、仮数部は十進の各桁をより詰め込めるよう、BCDなどではなく Densely Packed Decimal および Binary Integer Decimal を採用し、ビットの扱いが二進と比べ複雑になっている。またこの標準では、2つの符号化方式（DPDとBID）のどちらを使っているかを示す方法を用意していない（世の中にはエンディアンが2種類あるが、IEEE 754 が交換形式のエンディアンを指定していないのと同じである）。いずれにせよ符号・指数・仮数によって表現すること自体に変わりはない。また、NaNの表現は、二進同様に正規化数とは別扱いである。

浮動小数点数の丸め

IEEE 754-2008標準では5種類の丸めアルゴリズムが定義されている。うち2種類は最近接な値に丸める方法であり、残り3種類は方向丸めと呼ぶ。

全順序判定

この標準では totalOrder という述語を提供しており、それぞれの形式におけるあらゆる浮動小数点数の全順序を定義している。通常の大小比較の演算子で大小が決まる場合は、この述語も同じ結果になる。しかし、比較演算子ではNaNとの比較が判定できず、-0 と +0 は等しいという結果になる。totalOrder はそういった場合でも大小を判定し、複数の NaN や同じ数値を異なる符号化方式で表現した十進形式間でも大小を区別する。

代替の例外処理

規格では、様々な形の例外処理をオプションとして推奨している。例えば、ユーザー定義のデフォルト値を事前に代入しておく方式、トラップ方式（何らかの方式で例外をとらえて制御フローを変化させる）、try/catch などの制御構造を使って例外を処理する方式などである。トラップや例外処理用制御構造はオプションである。

推奨されている演算

標準の9章では50種類の演算、対数、冪乗、三角関数などを言語標準で定義すべきだと推奨している。これらは全てオプションであり、標準に準拠するのに必須とされているわけではない。他にも丸めモードへのアクセスと設定の手段、ドット積などの各種ベクトル演算などが含まれている。実装にあたっては、その時点の丸めモードにしたがって正しく丸めた結果を返さなければならない。不正確例外を発生する場合はその限りではないが、他の例外が発生する場合でも丸め処理は正しく行う必要がある。

式評価

この標準では、一連の演算の並びの意味論を言語標準で提供することを推奨しており、式の文字通りの意味の微妙さと最適化が計算結果に与える影響を指摘している。この観点は以前の IEEE 754-1985 では全く触れられておらず、結果としてコンパイラ毎に計算結果が違ってきたり、同じコンパイラでも最適化レベルによって計算結果が異なるという状況を招いていた。
プログラミング言語は、それぞれの基数について、式を計算するときの途中の最小精度をユーザーが指定できるようにすべきである。これを標準では "preferredWidth" と呼び、プログラムのブロック毎に設定可能にすべきだとしている。式の計算途中で一時変数に途中結果を保存するとき、オペランドの最大幅を使い、設定されていれば "preferredWidth" を使うべきである。したがって例えば、x87 を対象とするコンパイラは計算途中の結果を拡張倍精度で保持するよう指定可能であることが望ましい。

再現性

IEEE 754-1985 では実装の自由度が大きかった（符号化や例外発生条件など）。IEEE 754-2008 では実装の自由度を狭めているが、それでも若干の自由は残っている（特に二進形式）。再現性に関する節では、再現性のあるプログラムが書けるよう言語標準に推奨しており（すなわち、その言語のどの処理系でも1つのプログラムが同じ結果となること）、そのためにどうすべきかを解説している。