Ser*_*res 17 c floating-point int casting type-conversion
我正在使用C(不是C++).
我需要将一个浮点数转换成一个int
.我不想舍入到最接近的数字,我只是想消除整数部分之后的内容.就像是
4.9 -> 4.9-> 4
Zac*_*h P 30
my_var = (int)my_var;
Run Code Online (Sandbox Code Playgroud)
就如此容易.如果变量是int,基本上你不需要它.
如果你想把它四舍五入到更低,就投吧。
float my_float = 42.8f;
int my_int;
my_int = (int)my_float; // => my_int=42
Run Code Online (Sandbox Code Playgroud)
出于其他目的,如果你想把它四舍五入到最近,你可以做一个小函数或这样的定义:
#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 = FLOAT_TO_INT(my_float); // => my_int=43
Run Code Online (Sandbox Code Playgroud)
小心,理想情况下,您应该在转换之前验证浮点数介于 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
Run Code Online (Sandbox Code Playgroud)
使用 (int) 将 double 转换为 int 似乎不是万无一失的
您可以在这里找到更多相关信息:Convert double to int?
归档时间: |
|
查看次数: |
79921 次 |
最近记录: |