Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
z_f0.0f と 1.0f の間に固定された floatがあり、これをソート順を維持する符号なし整数に変換したいと考えています。
z_f
これを行う簡単な方法は次のとおりです。
float z_f = 0.5; unsigned int z_ui = (unsigned int) z_f*(MAX_UINT32);//Scale to full range of uint32
これは機能しますか? これにより、精度が低下しますか? 同じ結果を達成するためのより良い方法はありますか?
優先順位の理由から、まず C スタイルのキャストを避けます。2 つ目は、精度の問題により、この操作をfloatではなく、 で実行することdoubleです。
float
double
unsigned int z_ui = static_cast<unsigned int>(satic_cast<double>(z_f)*MAX_UINT32);