我需要帮助来保持精确度double.如果我将文字分配给double,则实际值会被截断.
int main() {
double x = 7.40200133400;
std::cout << x << "\n";
}
Run Code Online (Sandbox Code Playgroud)
对于上面的代码片段,输出7.402
是否有办法防止这种类型的截断?或者有没有办法计算出多少浮点数double?例如,number_of_decimal(x)会给出11,因为输入在运行时是未知的,所以我不能使用setprecision().
我想我应该将我的问题改为:如何在不截断浮点的情况下将double转换为字符串.即
#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";
}
Run Code Online (Sandbox Code Playgroud)
预期产量应为7.40200,但实际结果为7.402.那么我该如何解决这个问题呢?任何的想法?