Задача: У меня есть номер a = 2.7182818284590452353602875.Округление номера до указанной точности
Это 25 цифр после запятой. Мне нужно написать программу, которая будет округлять это число до указанной точности.
Точность ограничена, чтобы быть 0 < < н 100.
Например:
Входной сигнал: 0
Output: 3
Входной сигнал: 25
Output: 2.7182818284590452353602875
ввода : 4
Output: 2.7183
и так далее.
Это мой код. Он отлично работает, но я выхожу из unsigned long long
диапазона, если п> 17 ...
#include <iostream>
#include <iomanip>
#include <cmath>
#include <math.h>
using namespace std;
int main()
{
double a=2.7182818284590452353602875;
double b=a;
unsigned long long c=a;
int n;
int kiek=0;
cin>>n;
while (1!=0){
b=b*10;
c=b;
if (kiek==n) break;
kiek++;
cout<<c<<endl;
}
cout<<c<<endl;
if((c%10)>4) {c=c/10+1;}
else {c=c/10;}
double atgal=1;
for(int i=0;i<n;i++){
atgal*=10;
}
cout<<endl<<atgal<<endl;
b=c;
b=b/atgal;
cout<<fixed<<setprecision(n)<<b;
}
Любые предложения о том, как улучшить его или заставить его работать?
Если вы хотите точность по сравнению с большим количеством цифр, то будет остановлен по точности самого типа. Вы можете использовать библиотеку, такую как GMP. –
[tag: C++] is not [tag: c] .. – LPs
Просто используйте строку. –