整数除法(1 / n)的结果总是向下舍入到0.000

时间:2015-10-24 09:44:18

标签: c

我编写了一个简单的程序,它读取一个整数number并打印:1 / number

我不明白为什么输出总是:0.000

void main()
{
    int n = 0;
    scanf("%d",&n);

    float f = 1 / n;
    printf("%f",f);
}

5 个答案:

答案 0 :(得分:6)

您的(1/n)返回一个整数值!

你需要在分区中至少有一个float值!

将(1 / n)更改为(1.0 / n)。

答案 1 :(得分:4)

尝试:

f = 1.0 / n;

1/n将是转换为float并分配给f的int。

对于所有int1 / n 0的值为n > 1

1.0 / n将在浮动中执行计算,f将被分配预期结果。

答案 2 :(得分:2)

你的问题的原因是,你的两个参数都是整数。除以它们将始终产生整数。

尝试类似:

int n;
scanf("%d",&n);
float f=1.0f/n;      // n will be converted to type: float

或者读取浮动。

float n;
scanf("%f",&n);
float f=1/n;         // 1 will be converted to type: float

答案 3 :(得分:0)

请试试这个,它有效

multinom

答案 4 :(得分:0)

或许你应该只是"演员"像这样的操作

float f =(float)1 / n; 这将有效!!!