可能重复:
Possible Loss of Fraction
What is the behavior of integer division in C?
我是C的新手,我遇到了一些麻烦。以下代码:
int nr = 3;
float fl = nr/10;
printf("%4.1f\n", fl);
按照我的预期打印0.0
但不打0.3
。有什么问题?
答案 0 :(得分:2)
int除以数字将是一个向下舍入的int。您需要先将nr
转换为浮动...
float fl = (float) nr /10;
或者让编译器通过使分母成为浮动来知道你想要浮动
float fl = nr /10.0f;
答案 1 :(得分:2)
此:
float fl = nr/10;
进行整数运算。你想要:
float fl = nr/10.0;
此外,除非您有某些特定原因,否则最好使用双打进行浮点活动,而不是漂浮物。
答案 2 :(得分:2)
nr
是一个int,所以你仍然在进行整数除法,但是将它分配给一个浮点数。将nr
转换为浮点数:
float fl = (float) nr / 10;
// or divide by a float
float fl = nr / 10.0f;
答案 3 :(得分:1)
答案 4 :(得分:1)
int nr = 3;
float fl = nr/10; // float = int/int => integer division and then conversion to float
printf("%4.1f\n", fl);