1

float32既存のおよびfloat64フォーマットを使用して非負の浮動小数点値を格納する効率的な方法はありますか?

負/正を許可するデフォルトのfloat32動作を想像してください。

val = bytes.readFloat32();

負の値が必要ない場合、より大きな正の値を許可することは可能ですか?

val = bytes.readFloat32() + 0xFFFFFFFF;

編集:基本的に、正の値のみを格納していることがわかった場合、浮動小数点形式を少し変更して、同じ量のビットの範囲または精度を大きくすることができます。

例えば。float32形式は、符号が1 ビット、指数が8 ビット、小数が23 ビットとして定義されます。

符号ビットが必要ない場合、指数に8 ビット、分数に24 ビットを使用して、同じ 32 ビットの精度を高めることはできますか?

4

3 に答える 3

3

浮動小数点数 (float32およびfloat64) には明示的な符号ビットがあります。浮動小数点数には、符号なし整数に相当するものはありません。

したがって、正の浮動小数点数の範囲を 2 倍にする簡単な方法はありません。

于 2012-04-14T15:47:48.800 に答える
2

いいえ、無料ではありません。

他の数値表現を使用して、さまざまな方法で範囲/精度を拡張できます。float範囲と精度が必要な場合、またはdouble別の数値表現 (同じサイズ) を使用する場合、意図は明確ではなく、通常、パフォーマンスは低下します。

パフォーマンス/ストレージが非常に重要でない限り、そのままにしておくか、別の数値表現を使用して値を適切に (またはより良く) 表現できfloatます。double

于 2012-04-14T16:00:19.310 に答える