应该是没有bug的,欢迎大家补充案例
#include<bits/stdc++.h>
using namespace std;
const int maxn=1000001;
int s[maxn];//如果小数部分会进位到整数上,那这个用来存变化后的整数部分
int main(){
int a,b,c;
while(cin>>a>>b>>c){
int point[101];//用来存小数点后面的100位小数。
int start=a/b;//start为整数部分。
int h=a%b*10;
for(int i=0;i<101;i++){
point[i]=h/b;
h=h%b*10;
}
//下面这个用来看未四舍五入前的数。
printf("%d.",start);
for(int i=0;i<101;i++)
cout<<point[i]<<" ";
cout<<endl;
int add=0;
bool flag=false;//用来判断小数点后面第一位是否会进位到整数上。
if(point[c]>=5)
add=1;
for(int i=c-1;i>=0;i--){
point[i]+=add;
if(point[i]<9){
add=0;
break;
}
add=1;
if(i==0&&point[i]==10)
flag=true;
if(point[i]==10)
point[i]=0;
}
int j=0;
if(flag==true){
int resultstart=start;
if(resultstart==0)
s[0]=start+1;
else{
while(resultstart!=0){
s[j]=resultstart%10+add;
if(s[j]<9)
break;
if(s[j]==10)
s[j]=0;
resultstart/=10;
j++;
}
}
for(int i=0;i<=j;i++)
printf("%d",s[i]);
}
else
printf("%d",start);
printf(".");
for(int i=0;i<c;i++)
printf("%d",point[i]);
printf("\n");
}
}