C++下string类型转double类型
程序员文章站
2022-03-04 18:22:28
...
最近coding的时候随手写了std::stod()函数来进行类型的转换,发现输出的时候自动做了小数位的截取
尝试使用std::stold()函数转换成long double类型之后,依旧不能解决问题,输出依旧不是想要的
发现网上对这个问题的解答没有,于是写一篇来记录一下这个问题如何解决
sto本意就是string to,相关的函数有很多
因为stod有自动截取,一开始以为是输入不对,程序做了自动截取
改成stold后,输出依旧是四舍五入后的结果,在多方寻找之后找到了一个神奇的函数setprecision(int)
发现原来c++在输出的时候会自动四舍五入,需要用这个函数来调整显示位数
代码如下
#include <iostream>
#include <iomanip>
int main()
{
string slat = "-37.81517";
string slng = "144.97476";
double lat;
double lng;
double Summ;
lat = stod(slat);
lng = stod(slng);
Summ = lat + lng;
cout << lat << endl;
cout << lng << endl;
cout << Summ << endl;
cout << setprecision(10) <<lat << endl;
cout << setprecision(10) << lng << endl;
cout << setprecision(10) << Summ << endl;
}
结果如下
终于正常显示啦~