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;  
}