Вот мой код:Явное округления чисел более 7 знаков после запятой в C++
double round(char* strNumber, int decPlace);
int main()
{
int decimal;
char initialNumber[256];
cout << "Enter decimal and number " << endl;
cin >> decimal;
cin >> initialNumber;
cout << setprecision (15) << round (initialNumber,decimal) << endl;
return 0;
}
double round(char* strNumber, int decPlace)//
{
double number = atof(strNumber);
int temp = (int) (pow(10.0,decPlace) * number + 0.5);
double result = (double) temp/pow(10.0,decPlace);
return result;
}
Он работает до 6 знаков после запятой. В противном случае это дает какой-то странный результат. Ниже приведены цифры, которые я использовал для тестирования и вывода:
Тест 1 раунд до 7 знаков после запятой
105.265
52.5689745694
25.6835
452.689785
12.456789877458
Выход
105.265
52.5689746
25.6835
-214.7483648
12.4567899
Тест 1 раунд до 8 знаков после запятой
те же цифры, что и ранее
Выход
-21.47483648
-21.47483648
-21.47483648
-21.47483648
12.45678988
Это именно то, что мне нужно. – Mike55
@Pat: тогда вы должны «принять» ответ. –