the current C99 draft standardによると、これは倍数でなければなりません。もちろん、これはあなたのコンパイラが標準のその部分を満たしていることを前提としています。
C++の場合、私は標準の1998バージョンのドラフトと0xをチェックしましたが、どちらもIEEEを指定するnumeric_limitsのboolを超えて、C99標準のその部分のような表現について何も指定していないようですJosh Kelleyのように、754/IEC 559がそのプラットフォームで使用されています。
IEEE 754をサポートしていないプラットフォームはほとんどありません。IEEE 754はよく定義されていて非常にうまく動作するため、一般的にもう1つの浮動小数点形式を設計することはできません。 2倍は実際に64ビットであるという合理的な仮定(IEEE 754-1985は倍精度をフォーマットします。結局それは意味があります)。
doubleが倍精度でない可能性がある場合は、ユーザーが報告でき、そのプラットフォームを個別に処理できるように健全性チェックを作成します。プラットフォームがIEEE 754をサポートしていない場合は、あなたがそれを自分で実装しない限り、その表現はとにかく得られません。
通常、ある種のオブジェクトフラグをエンコードするため、intのビット数が必要です。なぜあなたのフロートの精度についての保証が必要ですか? 多くの場合、私は人がランダム変数の大きさの重要性を過大評価する傾向があることを知りました。マシンのデフォルトのワードサイズを使用する方が、3バイトのメモリを絞り出すことや、32ビットの値を任意に使用する方がよい場合がよくあります。 –
@ Andrew-Khosravian私はスクリプト言語を書いています。私はユーザーにタイプサイズの保証をしたいと考えています。これにより、スクリプト言語で書かれたコードは移植性が向上します。 – Imagist
移植性は問題ありませんが、どこかに線を描く必要があります。結局のところ、あなたのスクリプト言語がPDP-11上で動作するとは思わないでしょう。 IEEE 754をサポートしていないプラットフォームはごくわずかであり、サポートされている場合は、倍精度浮動小数点値であるため、倍精度浮動小数点数が64ビットであるという合理的な前提があります。ユーザがそれを報告できるようにサニティチェックを構築し、そのプラットフォームを個別に処理することができます。プラットフォームがIEEE 754をサポートしていない場合は、あなたがそれを自分で実装しない限り、その表現はとにかく得られません。 –