dod*_*lue 0 c++ string double atof strtod
我需要将字符串转换为精度高达 15 位的双精度数
我读过很多文章和类似的问题,他们建议在将数字打印到屏幕上时使用 set precision(15) 。
例如:
string line = "34.9438553";
double lon1 = strtod(line.c_str(),NULL);
Run Code Online (Sandbox Code Playgroud)
如果我写
cout << lon1;
Run Code Online (Sandbox Code Playgroud)
它只会打印 34.9439 而不是 34.9438553
我本来可以写
cout << setprecision(15) << lon1;
Run Code Online (Sandbox Code Playgroud)
它会工作,但我需要变量 lon1 本身具有 15 位精度,因为我需要变量内的整个数字,而不仅仅是在将其打印到屏幕上时。
有谁知道该怎么做?
setprecision设置打印的精度,而不是双精度的精度。strtod将双精度型读入双精度型或字符串中可用精度的最小值(在本例中受字符串限制)。
简而言之,lon1通过使用 ,您已经获得了字符串的完整精度strtod。