📅  最后修改于: 2023-12-03 15:29:07.142000             🧑  作者: Mango
fmod()
是math.h(cmath)头文件中的函数,可以用于浮点数的取模运算,即求两个数相除的余数。
double fmod(double x, double y);
参数:
x
:被除数y
:除数返回值:
x
除以y
的余数#include <iostream>
#include <cmath>
using namespace std;
int main() {
double x = 10.5, y = 3.2;
cout << "fmod(x,y) = " << fmod(x, y) << endl;
return 0;
}
输出:
fmod(x,y) = 1.3999999999999995
当y
为0时,函数的行为是未定义的。
取模结果的符号和x
的符号一致。
举例来说:
cout << "fmod(-10.5, 3.2) = " << fmod(-10.5, 3.2) << endl; // 输出:fmod(-10.5, 3.2) = -1.3999999999999995
cout << "fmod(10.5, -3.2) = " << fmod(10.5, -3.2) << endl; // 输出:fmod(10.5, -3.2) = 1.3999999999999995
注意到这里的结果都是1.3999999999999995,因为这是浮点数舍入误差造成的。但符号确实与x
的符号一致。
结果不一定跟整数的取模运算一致。
举例来说:
cout << "fmod(-10.5, 2) = " << fmod(-10.5, 2) << endl; // 输出:fmod(-10.5, 2) = -0.5
cout << "fmod(10.5, 2) = " << fmod(10.5, 2) << endl; // 输出:fmod(10.5, 2) = 0.5
结果不符合我们通常对于整数取模的理解,所以要根据具体情况而定。