浮点变量的意外输出

时间:2014-08-26 18:36:41

标签: c

我无法理解以下程序生成的输出:

#include <stdio.h>
main()
{
    float d =245.3;
    char c = 'A';
    printf("d = %f",d);
    d = d+c;
    printf("\nd = %f",d);
    getch();
    return 0;
}

Output:
d = 245.3000003
d = 310.2999988

虽然d是245.3,但是打印245.3000003。 加上65之后,这是不准确的。

1 个答案:

答案 0 :(得分:0)

浮动有精确问题。原因是0.1并不能用浮点数完美表示。

一个很好的阅读开头: - What every computer scientist should know about floating-point arithmetic