输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤10 6 ,c≤100。
样例输入:
1 6 4
样例输出:
0.1667
这道题靠计算机本身来做除法是会出现精度问题的,所以要模拟数学上的除法:
#include<bits/stdc++.h>
using namespace std;
int main() {
int a,b,c,i=-1;
cin>>a>>b>>c;
cout<<a/b;
//排除c=0的情况
if(c>0){
cout<<'.';
}
//模拟数学除法
for(i=1;i<c;i++){
a=a%b;
a=a*10;
cout<<a/b;
}
//最后一位四舍五入
if(i==c){
a=a%b;
a=a*10;
int c=a/b;
a=a%b;
a=a*10;
if(a/b<4||c==9){
cout<<c;
}else{
cout<<c+1;
}
}
cout<<endl;
return 0;
}