#6825. 高精度小数输出
高精度小数输出
高精度小数输出
题目描述
小明正在学习除法运算。
给定两个整数:
- 被除数
a - 除数
b
请计算:
并按照要求输出结果。
由于计算机中浮点数存在精度限制,本题要求你模拟人工竖式除法,输出指定数量的小数位。
输入格式
输入共一行,包含三个整数:
a b n
其中:
a表示被除数。b表示除数。n表示需要保留的小数位数。
保证:
1 ≤ a,b ≤ 10^9
0 ≤ n ≤ 100
输出格式
输出:
a ÷ b
的结果。
要求:
- 输出整数部分;
- 输出一个小数点
.; - 输出小数点后
n位数字。
如果小数不足 n 位,需要补 0。
样例输入 1
10 3 5
样例输出 1
3.33333
样例解释
计算:
10 ÷ 3
整数部分:
10 / 3 = 3
余数:
10 % 3 = 1
开始计算小数部分:
第一次:
1 × 10 = 10
10 / 3 = 3
余数 = 1
第二次:
1 × 10 = 10
10 / 3 = 3
余数 = 1
因此:
3.33333
样例输入 2
22 7 6
样例输出 2
3.142857
样例解释
22 ÷ 7
整数部分:
22 / 7 = 3
余数:
22 % 7 = 1
小数模拟:
| 次数 | 余数×10 | 商 | 新余数 |
|---|---|---|---|
| 1 | 10 | 1 | 3 |
| 2 | 30 | 4 | 2 |
| 3 | 20 | 2 | 6 |
| 4 | 60 | 8 | 4 |
| 5 | 40 | 5 | |
| 6 | 50 | 7 | 1 |
得到:
3.142857
数据范围说明
小数据:
n ≤ 10
可以直接使用 double。
本题:
n ≤ 100
需要模拟除法。
原因:
浮点数:
double
只能保证约15~16位有效数字。
如果:
1 / 3
要求:
100位小数
double 无法准确表示。
相关
在以下作业中: