我已经看到很多关于从float转换为int32_T的问题,但没有一个地址将int32_t转换为float。将int32_t转换为浮点数
我正在使用的数据以厘米为单位。所以我只想确认,如果我尝试将它们转换为浮点数,将不会有任何类型转换问题。
我对此转换感兴趣的原因是我使用的函数仅适用于浮点数。所以如果我传递函数int32_t并期望浮动,它会自动为我的参数进行类型转换吗?
我已经看到很多关于从float转换为int32_T的问题,但没有一个地址将int32_t转换为float。将int32_t转换为浮点数
我正在使用的数据以厘米为单位。所以我只想确认,如果我尝试将它们转换为浮点数,将不会有任何类型转换问题。
我对此转换感兴趣的原因是我使用的函数仅适用于浮点数。所以如果我传递函数int32_t并期望浮动,它会自动为我的参数进行类型转换吗?
如果您将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
演员漂浮传递给函数
int32_t i=32;
func((double) i);
当你尝试过什么事之前? –