1.0 未満の最も近い数値を浮動小数点として使用したいと考えています。IEEE-754に関するウィキペディアの記事を読むことで、1.0 のバイナリ表現が であることを確認できた3FF0000000000000
ので、最も近い double 値は実際には0x3FEFFFFFFFFFFFFF
です。
このバイナリ データで double を初期化する唯一の方法は次のとおりです。
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
これは、使用するのがかなり面倒です。
可能であれば、この倍数を定数として定義するより良い方法はありますか?