2014-03-26 84 views
1

我已经看到很多关于从float转换为int32_T的问题,但没有一个地址将int32_t转换为float。将int32_t转换为浮点数

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

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

+2

当你尝试过什么事之前? –

回答

5

如果您将int32_t传递给按参数值取float参数的函数,则会有隐式转换(类型转换)。一个警告是,IEEE754单精度float精度低于32位整数(它具有大约24位的精度,而32位为int32_t),所以如果您使用大值,则可能会失去一些准确性。

例子:

#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 
0

演员漂浮传递给函数

int32_t i=32; 

func((double) i);