我正在尝试将字符串转换为双精度型,但是双精度型在第三个小数点处被截断。
我的字符串看起来像这样:“ -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;
}
输出示例:
got longitude: -122.39381636393
setting longitude: -122.394
我希望它保持所有小数点,有什么提示吗?
如果我是你,我会写这段代码:
#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;
}
基本上,您将更改以下内容:
印刷精度
使用stod而不是低级操作从字符串中获取双精度字。
您可以在ideone运行时看到它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句