Преобразование строки в двойное приводит к округлению до целого числа - PullRequest
2 голосов
/ 14 марта 2020

Я пытаюсь преобразовать десятичное число string в double, однако, когда я использую функцию atof(), мой номер округляется до целого числа.

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
string num = "135427.7000";
double r = atof(num.c_str());
cout << r << endl;
}

вывод:

135428

Я хочу:

135427.7

1 Ответ

7 голосов
/ 14 марта 2020

cout делает это, а не atof().

Точнее, operator<<, который вставляет форматированные данные в std::ostream.

Вы можете использовать std::setprecision() из стандартной библиотеки <iomanip> для печати десятичных знаков:

cout << setprecision(7) << r << endl;

или

cout << fixed << setprecision(1) << r << endl;

Если Вы хотите распечатать все 135427.7000:

cout << fixed << setprecision(4) << r << endl;
...