将int32_t转换为float

时间:2014-03-26 14:23:25

标签: c

我已经看到很多关于从float转换为int32_T的问题,但没有一个解决将int32_t转换为float的问题。

我正在使用的数据以厘米为单位。所以我只想确认,如果我尝试将它们转换为浮点数,就不会有任何类型转换问题。

我对此转换感兴趣的原因是我使用的函数仅适用于浮点数。因此,如果我传递函数int32_t并且它期望浮点数,它会自动对我的参数进行类型转换吗?

2 个答案:

答案 0 :(得分:5)

如果将int32_t传递给按值float参数的函数,则会有隐式强制转换(类型转换)。但需要注意的是,IEEE754单精度float的精度低于32位int(精度约为24位,而int32_t则为32位),因此如果你有一定的精度,你可能会失去一些准确性。 '使用大值。

示例:

#include <stdio.h>
#include <stdint.h>

int32_t sqr(int32_t x)
{
    return x * x;
}

float sqrf(float x)
{
    return x * x;
}

int main(void)
{
    int32_t x = 9999;

    printf("sqr(%d) = %d, sqrf(%d) = %f\n", x, sqr(x), x, sqrf(x));
    return 0;
}

编译并运行:

$ gcc -Wall int_float_prec.c && ./a.out
sqr(9999) = 99980001, sqrf(9999) = 99980000.000000

答案 1 :(得分:0)

在传递给函数之前强制转换为浮动

int32_t i=32;

func((double) i);