0

float 変数を 0 から 100 までの値の整数に変換しようとしています。float は常に正です。対応する整数値は、32 ビット float の最大値と比較した float 値のサイズを反映する必要があります。たとえば、0.0 は 0 に変換され、3.402823466 E + 38 は 100 に変換され、その他はその間にあります。

ここに私がこれまでに持っているものがありますが、ゼロ以外の入力の出力として -1 を取得し続けます。

int convFloat(float x){
    int y;
    y = (int) (x/3.4e38) * 100;
    return y;
}

ここで何が間違っていますか?

4

2 に答える 2

3

これ:

y = (int) (x/3.4e38) * 100;
//  ^--------------^
//  cast (x/3.4e38)to int

次のようにする必要があります。

y = (int) ((x/3.4e38) * 100);
//  ^----------------------^
//  cast ((x/3.4e38) * 100)to int
于 2012-04-23T07:44:38.867 に答える
0
((union { float f; uint32_t u; }){ val }.u>>23&255)*100/255
于 2012-04-23T09:20:53.413 に答える