私は[〜#〜] c [〜#〜](C++ではない)を使用しています。
浮動小数点数をint
に変換する必要があります。私は最も近い数に丸めたくないので、単に整数部分の後のものを削除したいだけです。何かのようなもの
4.9-> 4.9-> 4
my_var = (int)my_var;
それと同じくらい簡単です。基本的に、変数がintの場合は必要ありません。
Cで使用
int C = var_in_float;
それらは暗黙的に変換します
ありがとうございました
丸めたい場合は、次のような小さな関数または定義を作成できます。
#define FLOAT_TO_INT(x) ((x)>=0?(int)((x)+0.5):(int)((x)-0.5))
float my_float = 42.8f;
int my_int;
my_int = (int)my_float; // => my_int=42;
my_int = FLOAT_TO_INT(my_float); // => my_int=43;
キャストする前に、フロートがINT_MINとINT_MAXの間であることを確認するのが理想的です。
double a = 100.3;
printf("%f %d\n", a, (int)(a* 10.0));
Output Cygwin 100.3 1003
Output MinGW: 100.3 1002
(int)を使用してdoubleをintに変換することは、フェイルセーフではないようです
詳細については、こちらを参照してください。 doubleをintに変換しますか?