0

我正在尝试将浮点变量转换为 0 到 100 之间的整数值。浮点数始终为正。对应的整数值应该反映浮点值的大小与 32 位浮点数的最大值相比,例如 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 回答