P51. 练10.3 计算浮点数相除的余数

https://ok.hn.cn/p/P51

说明

计算两个双精度浮点数 \(a\)\(b\) 的相除的余数,\(a\)\(b\)都是双精度浮点数。这里余数(\(r\))的定义是:\(a = k \times b + r\) ,其中 \(k\) 是整数,\(0 \le r < b\)

输入格式

输入仅一行,包括两个双精度浮点数 \(a\)\(b\)

输出格式

输出也仅一行, \(a \div b\) 的余数。

题解

a,b=map(float,input().split())
k=int(a/b)
r=a-k*b
print("{:.6}".format(r) )  
# 此为有效数位 6 位,含整数,与 c++一致 类似setprecision(6)
# print("%.6f"%r)  些为保留小数点后 6 位,不足补零

控制python中的浮点数输出的位数,一般有三种方法:

① 使用round函数,用法为:round( x [, n] ),x为浮点数,n为保留的小数位数参数是可选的如果不写那么默认不保留小数。

② 利用”%nf”输出n位小数

③ 使用format函数格式化数字输出,format函数中使用一个大括号表示需要填充的参数,:后面可以规定数字的精度与类型

举例

num = 3.1415926
#使用format
num1 = "{:.3f}".format(num) #3位小数
num2 = "{:.3}".format(num) #3位有效数字
# 使用%
num3 = "%.3f"%num #3位小数
print(num)
print(num1)
print(num2)
print(num3)

输出

3.1415926
3.142
3.14
3.142

题解

 a = k*b + r;    ==> r = a - k*b
 k = a/b    ==> k 是整数部分
#include <bits/stdc++.h>
using namespace std;
int main(){
    double a, b;
    scanf("%lf %lf",&a,&b);
    int c = a/b; //数据类型转换,计算整数部分
    double d = a - b*c; //求余数
    cout<<d;
    return 0;
}