字符串到双精度转换 C++

jsh*_*hah 4 c++ string double

我正在尝试将字符串转换为双精度数,但我的双精度数在小数点后第三位被截断。

我的字符串看起来像这样:“-122.39381636393”转换后它看起来像这样:-122.394

void setLongitude(string longitude){
    this->longitude = (double)atof(longitude.c_str());

    cout << "got longitude: " << longitude << endl;
    cout << "setting longitude: " << this->longitude << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出示例:

got longitude: -122.39381636393
setting longitude: -122.394
Run Code Online (Sandbox Code Playgroud)

我希望它保留所有小数点,有什么提示吗?

lpa*_*app 5

如果我是你,我会写这段代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str = "-122.39381636393";
    std::cout.precision(20);
    cout << "setting longitude: " << stod(str) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

基本上,您会更改以下内容:

  • 印刷精度

  • stod 而不是低级操作来从字符串中获取双倍。

你可以在 ideone running 上看到它。