Вы можете добавить логику для округления, чтобы избежать длинных последовательностей 9, как в последнем результате.

ужна помощь в сохранении точностиdouble, Если я назначу литерал в double, фактическое значение будет усечено.

int main() {
    double x = 7.40200133400;
    std::cout << x << "\n";
}

Для приведенного выше фрагмента кода вывод был7.402
Есть ли способ предотвратить этот тип усечения? Или есть способ точно рассчитать, сколько с плавающей запятой дляdouble? Например,number_of_decimal(x) даст 11, так как ввод неизвестен во время выполнения, поэтому я не могу использоватьsetprecision().

Я думаю, что я должен изменить свой вопрос на: Как преобразовать двойное число в строку без усечения чисел с плавающей запятой. то есть

#include <iostream>
#include <string>
#include <sstream>

template<typename T>
std::string type_to_string( T data ) {
    std::ostringstream o;
    o << data;
    return o.str();
}

int main() {
    double x = 7.40200;
    std::cout << type_to_string( x ) << "\n";
}

Ожидаемый результат должен быть 7.40200, но фактический результат был 7.402. Так как я могу обойти эту проблему? Любая идея?

Ответы на вопрос(9)

Ваш ответ на вопрос