除法保留小数bit位 + 四舍五入

时间:2023-03-08 21:13:56
除法保留小数bit位 + 四舍五入
/*num1/num2  保留bit 位小数 , 四舍五入*/

#include<bits/stdc++.h>
using namespace std;
int OP[];
int main()
{
int num1,num2,bit;
cin>>num1>>num2;
cin>>bit;
int temp=;///判断负数的个数
if(num1<) temp++;
if(num2<) temp++;
if(temp==) cout<<'-';///负数
if(num1<) num1=-num1;
if(num2<) num2=-num2;
int N=num1/num2;///整数
int F=; for(int i= ; i<=bit ; i++)
{
num1=num1%num2*;
OP[i]=num1/num2;
}
///四舍五入
if(OP[bit]>=)
{
OP[bit-]++;
for(int i=bit- ; i>= ; i--)
{
if(OP[i]>=)
{
if(i==)
{
F=;break;
}
OP[i-]++;
OP[i]-=;
}
}
}
cout<<N+F<<'.';
for(int i= ; i<bit ; i++)
cout<<OP[i];
puts("");
}