一見すると、私の質問は少し奇妙に思えるかもしれません。double を float 値にキャストすることは、私が望むものではありません。それをキャストすると、IEEE-754 で定義された規則に関していくらかの精度が失われ、浮動小数点数の範囲への double 値の実際のマッピングを達成できないためです。それは役に立たない。次の式は機能しますが、大量の入力がある場合は非常にコストがかかります。
float mappedVal = (float)((val * MAX_FLOAT_VALUE + 1) / MAX_DOUBLE_VALUE);
まったく同じ計算を高速化するために、ある種のビット演算を介して結果を上記の「mappedVal」に近づけることはできますか?