例如在 1140/9 上使用舍入函数时,输出为 126,但 1140/9=126.666666667。输出不应该是127吗?
我检查了 round() 的定义,但我看不出它是如何返回 126 而不是 127 的。
不——你使用了整数除法! (你说你有
1140/9
它将两个整数相除,产生一个整数结果。)除法的整数结果被转换为 double
因为 round()
的原型表明这是传递给 round()
的正确类型, 并且该函数返回整数结果的浮点等效值。尝试1140.0/9.0
——然后你会得到你期望的结果。您可以为分子或分母或两者使用浮点数——所有这些都会产生浮点结果。
#include <math.h>
#include <stdio.h>
int main(void)
{
printf("Integer division: %d; Rounded: %f\n", 1140/9, round(1140/9));
printf("Floating division: %f; Rounded: %f\n", 1140.0/9.0, round(1140.0/9.0));
return 0;
}
输出:
Integer division: 126; Rounded: 126.000000
Floating division: 126.666667; Rounded: 127.000000
这里有一个更好的演示:
#include <math.h>
#include <stdio.h>
int main(void)
{
double v1 = 1140 / 9;
double v2 = round(1140 / 9);
double v3 = 1140.0 / 9.0;
double v4 = round(1140.0 / 9.0);
printf("Integer division: %f; Rounded: %f\n", v1, v2);
printf("Floating division: %f; Rounded: %f\n", v3, v4);
return 0;
}
输出:
Integer division: 126.000000; Rounded: 126.000000
Floating division: 126.666667; Rounded: 127.000000