P51. 练10.3 计算浮点数相除的余数
说明
计算两个双精度浮点数 \(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;
}