我正在尝试将字符串转换为双精度数,但我的双精度数在小数点后第三位被截断。
我的字符串看起来像这样:“-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)
我希望它保留所有小数点,有什么提示吗?
如果我是你,我会写这段代码:
#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 上看到它。