q1613551 发表于 2023-6-25 19:47:52

为什么最后结果是等于0呢

#include <stdio.h>
#include <stdlib.h>
int main(void)
{

    printf("一次性定期存五年,最后所得为%d\n", (10000 * (1 + 0.015 * 5)));
    system("pause");
    return 0;
}

isdkz 发表于 2023-6-25 19:50:43

在你的代码中,存在一个常见的问题:整数除法。在 C 语言中,当两个整数相除时,结果会向下取整,也就是说,小数部分会被舍弃。

在你的代码中, (10000 * (1 + 0.015 * 5))的计算是按照整数计算的。这里1和0.015 * 5都被当作整数来处理,因此0.015 * 5结果会被舍弃成0 ,最后整个表达式的结果就成了10000 * 1 = 10000 。

如果你想得到正确的结果,你需要把其中一部分作为浮点数来处理。在这个情况下,你应该用double或float数据类型来存储你的结果,并使用%f格式符来打印浮点数。下面是修正后的代码:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    double result = 10000 * (1 + 0.015 * 5);
    printf("一次性定期存五年,最后所得为%.2f\n", result);
    system("pause");
    return 0;
}


在这段代码中, result是一个double类型的变量,它会正确地计算并存储(10000 * (1 + 0.015 * 5))的结果,然后使用%.2f格式符来打印该浮点数,保留两位小数。
页: [1]
查看完整版本: 为什么最后结果是等于0呢