📜  ++ STL-math.fmod()函数(1)

📅  最后修改于: 2023-12-03 15:29:07.142000             🧑  作者: Mango

STL-math.fmod()函数

简介

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
注意事项
  1. y为0时,函数的行为是未定义的。

  2. 取模结果的符号和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的符号一致。

  3. 结果不一定跟整数的取模运算一致。

    举例来说:

    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
    

    结果不符合我们通常对于整数取模的理解,所以要根据具体情况而定。