我需要帮助保持 double
的精度。如果我将一个字面量赋给一个 double
,实际值会被截断。
int main() {
double x = 7.40200133400;
std::cout << x << "\n";
}
对于上面的代码片段,输出结果为
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";
}
期望的输出应该是7.40200,但实际结果是7.402。那么我该如何解决这个问题呢?有什么想法吗?