C++将字符串精确地转换为 double

标签 c++ string double atof strtod

我需要将字符串转换为精度高达 15 位的 double

我看过很多文章和类似的问题,他们建议在将数字打印到屏幕上时使用 setprecision(15)。

例如:

string line = "34.9438553";
double lon1 = strtod(line.c_str(),NULL);

如果我写

cout << lon1;

它只会打印 34.9439 而不是 34.9438553

我可以写

cout << setprecision(15) << lon1;

它会工作,但我需要变量 lon1 本身具有 15 位精度,因为我需要变量中的整个数字,而不仅仅是当我将它打印到屏幕上时。

有人知道怎么做吗?

最佳答案

setprecision 设置打印精度,而不是 double 。 strtod 将 double 读入 double 或字符串(在本例中以字符串为界)中可用的最小精度。

简而言之,您已经通过使用 strtod 获得了 lon1 中字符串的完整精度。

关于C++将字符串精确地转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579439/

相关文章:

c# - 使用 LINQ 解析内部双字典?

c++ - 复制/粘贴时未识别的命令,但手动编写时识别的命令

c++ - OpenCV 项目无法编译

c++ - 使用 QProcess->setReadChannelMode(QProcess::MergedChannels) 并使用 QProcess->readall()

C++ 和 box2d : userdata cast int to void*

string - 为什么 jq --raw-output 参数无法从 @csv 输出中删除引号?

ios - 如何将 NSTimeInterval 转换为秒数(对于 backgroundTimeRemaining)

c# - 检查 List<List<string>> 是否包含字符串

python - 将 IP 地址从长整型格式转换为字符串

c# - 每次加倍带来不同的值(value)