我刚开始学习C编程,但是每当我运行这个:
double a = 9.92;
double b = 2.00;
printf("%.2lf, %.2lf, %.2lf", a, b, remainder(a, b));
输出总是$-0.18。我希望的输出是$1.92。
余数函数将除法的结果舍入到最接近的整数,这意味着您可以得到一个负的结果。从手册页:
remainder()
函数计算x
除以的余数y
。返回值为x-n*y
,其中n
为值x / y
,四舍五入到最接近的整数。如果x-n*y
的绝对值为0.5,则选择n
为偶数
因此,给定您的输入,9.92 / 2
的结果是4.96
,四舍五入到最接近的整数是5
。然后是9.92 - (5 * 2.00)
==9.92 - 10.0
==-0.08
您希望使用fmod
,它将除法舍入到0。手册页说明:
fmod()
函数计算浮点余数x
除以y
。返回值为x - n * y
,其中n
为x / y
的商,向零四舍五入为整数。