Printf添加数字

时间:2013-04-14 17:57:04

标签: c console printf

我有一个小程序:

int main(int argc, const char * argv[])
{

    float num1;
    float num2;

    num1 = 21.2;
    num2 = 13.6;

    double sum;

    sum = num1 + num2;

    printf("The sum of two numbers is %3.5f. \n", sum);


    return 0;
}

当它打印到控制台时,这就是我得到的:

两个数字的总和为34.800003

为什么我在小数结尾处得到3?试图理解Printf,但这对我来说很神秘......

3 个答案:

答案 0 :(得分:0)

使用双精度进行添加:

sum = num1;
sum += num2;

或申请一些演员:

sum = (double) num1 + (double) num2;

答案 1 :(得分:0)

它与数字的精确度有关。如果您对详细信息感兴趣,建议您查看Wikipedia on this。它们存储的格式只能精确到一定的降级。

要获得更高的准确度,请使用double类型:

int main(int argc, const char * argv[])
{

    double num1;
    double num2;

    num1 = 21.2;
    num2 = 13.6;

    double sum;

    sum = num1 + num2;

    printf("The sum of two numbers is %3.5f. \n", sum);


    return 0;
}

答案 2 :(得分:0)

c中的所有内容都是按位完成的,只需打印num1和num2的十六进制值。您缺少的是0.2和0.6无法精确定义,因为您无法获得c中的正确位。在c小数点是 用2的幂的负数计算。从十进制到二进制的转换低于2 ^ -1 * b1 + 2 ^ -2 * b2 + 2 ^ -3 * b3这是c如何计算c中的浮点数。