我已經看到很多關於從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);
當你嘗試過什麼事之前? –