奇安信笔试第一道题C++保留小数的问题
昨天第一道题只过了10%,代码如下:
#include <bits/stdc++.h>
using namespace std;
double a = 990;
double b = 1000;
double rec(int x,double ans){
if(x!=0)
return rec(--x,ans*(a-x+1)/(b-x+1));
else
return ans;
}
int main(){
int n;
cin>>n;
double sum = 1;
printf("%f",(1-rec(n,sum)));
} 今天想了一下或许每次运算都要保存6位小数
想了两种case:
1.每次只保留六位小数进行运算
//保存六位小数
double round(double number) {
int c = number*1000000;
double number = (double) c/1000000;
return number;
} 2.每次四舍五入保留六位小数进行运算
//四舍五入保存六位小数
double round(double number {
stringstream ss;
ss << fixed << setprecision(6) << number;
ss >> number;
return number;
} #奇安信##笔试题目#个人还是倾向于第二种,可惜没数据测了
顺丰集团工作强度 274人发布
查看10道真题和解析