仮数のビット数が整数のビット数以上の場合、答えは「はい」です。あなたの質問では、の特定の既知のサイズintとの仮数を指定しますが、これは2003 C ++標準では保証されていないdoubleことを知っておくと便利です。これは、との仮数の相対的なサイズについては何も述べていません。intdouble
IEEE754浮動小数点演算を使用するためにCおよびC++は必要ないことに注意してください。2003C++標準の3.8.1/8によると、
浮動小数点型の値表現は実装定義です。
実際、C ++では、2進仮数を使用しない浮動小数点表現が許可されています。Cの場合、#include <limits.h>を使用して、基本型に関する情報を推測できます。特に、FLT_RADIX累乗DBL_MANT_DIGが、以上の場合INT_MAX、すべてのint値を正確に表すことができます。C ++では、関連する数量は、、numeric_limits<double>::radixおよびnumeric_limits<double>::digitsと呼ばれnumeric_limits<int>::max()ます。
2つの整数オペランドと、常に整数オペランドから整数を生成する演算(+または*、など/)が与えられると、すべてのIEEE754丸めモードは正確に整数を生成します。この整数がで表現可能である場合int(したがってdouble、仮数が少なくともと同じ幅であるという仮定を前提として、で正確に表現可能であるint場合)、対応する整数演算を使用して取得するのと同じ整数になります。賢明なFP実装は、IEEE 754に準拠していなくても、上記の保証を保持します。