web-dev-qa-db-ja.com

C浮動小数点をintに変換します

私は[〜#〜] c [〜#〜](C++ではない)を使用しています。

浮動小数点数をintに変換する必要があります。私は最も近い数に丸めたくないので、単に整数部分の後のものを削除したいだけです。何かのようなもの

4.9-> 4.9 -> 4
16
SergSoftwares
my_var = (int)my_var;

それと同じくらい簡単です。基本的に、変数がintの場合は必要ありません。

29
Zach P

Cで使用

int C = var_in_float;

それらは暗黙的に変換します

ありがとうございました

5
user3161739

丸めたい場合は、次のような小さな関数または定義を作成できます。

#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の間であることを確認するのが理想的です。

4
AdriZ
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に変換しますか?

2
Legu