计算浮点数相除的余数

GitHub跳转原题关系图返回列表

用 a-int(a/b)*b 按题目定义求正浮点数除法余数。

OJ: noi_openjudge

题目 ID: ch0103-11

难度:入门

标签:浮点数数学python

日期: 2026-07-30 23:01

题意

对两个正浮点数求余数 rr,满足 a=kb+ra=kb+r0r<b0\leqslant r<b

思路

先取 k=int(a/b)k=\operatorname{int}(a/b),因为 a,ba,b 都为正,int 就是向下截断。余数为 a - k * b。题目要求末尾不补零,g 格式会按需要输出有效数字。

代码

Python代码

python
a, b = map(float, input().split())
remainder = a - int(a / b) * b
print(f"{remainder:g}")

C++代码

cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
    double a,b;
    cin >> a >> b;
    int k = a / b;
    double r = a - k*b;
    cout << r << endl;

    return 0;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

浮点余数可从定义式构造;本题输入为正数,避免了负数取整方向的歧义。