C++では、floating pointの内部表現は、実装依存である。ExponentやFractionを得る、ポータブルな方法はない。
ただし、numeric_limitsに、is_iec559というメンバーがある。これがtrueの場合、IEC 559 Standard準拠であることを意味する。
ということは、もし、is_iec559がtrueであれば、float、double、long doubleのうち、サイズが32bitか、64bitである型は、ビット演算を使うことによって、ポータブルに内部表現を調べられる。
しかし、1 byte = 8 bitである保証はないので、やはり、ポータブルなコードは書けない。
最も、exponentやfractionを取得することを前提としたコードは、もとよりポータブルには書けない。どうでもいいといえば、どうでもいいのかもしれないが。
No comments:
Post a Comment