+/- Infinity に変換せずに 64 ビット浮動小数点数を 32 ビット浮動小数点数に変換できるかどうかを確認する標準的な方法はありますか?
後で+/- Infをチェックできることはわかっています。
Convert.ToSingle()
これはしません。
+/- Infinity に変換せずに 64 ビット浮動小数点数を 32 ビット浮動小数点数に変換できるかどうかを確認する標準的な方法はありますか?
後で+/- Infをチェックできることはわかっています。
Convert.ToSingle()
これはしません。
double
値が無限大にならずd
に に変換されるかどうかをテストするために、 の絶対値が as と書かれた値(つまり、16 進数)を厳密に下回っているかどうかをテストできます。この数は、float に変換できる double と変換できない double の間の正確な制限です。float
d
double
3.4028235677973366e+38
0x1.ffffffp+127
少し拡張すると、最後の有限フロートは次のようになります。
0x1.fffffep+127 (3.4028234663852886e+38 in decimal)
タイプがより多くの指数ビットを持っていた場合、次のfloat
数は次のようになります。float
0x2.000000p+127 (3.4028236692093846e+38 in decimal)
後者よりも前者に近い数値は前者に切り捨てられます。極限は 2 つの数値の中間点です。
0x1.ffffffp+127 (3.4028235677973366e+38 in decimal)