printf - 关于浮点数的错误答案

时间:2014-09-16 18:21:51

标签: c floating-point printf

我试图将两个数字分开并打印答案,但编译器总是给出1.000000作为答案,我试过改变文字,但答案仍然有点相同。

这是我的代码:

#include <stdio.h>
int main()
{
float a = 20 / 12;
printf ("%f", a);
}

为什么会出现这种情况以及如何获得正确答案?

4 个答案:

答案 0 :(得分:4)

更改

float a = 20 / 12;

float a = 20 / 12.f;

20 / 12是一个整数除法。

答案 1 :(得分:4)

float类型的值中的至少一个进行类型转换。

float a=(float)20/12;

答案 2 :(得分:2)

如果我更改

,则执行整数除法
float a = 20 / 12;

float a = (float) 20 / 12;

我得到了

1.666667

答案 3 :(得分:2)

你所做的是整数除法,即

float a = 20/12 ----- gives you the integer quotient.

为了得到一个浮动商,你可以像这样做

float a = 20/12.0;    
or
float a = 20.0/12;