我需要将字符串转换为精度最高为15位的双精度数字
我已经阅读了许多文章和类似的问题,他们建议在将数字打印到屏幕上时使用setprecision(15)。
例如:
string line = "34.9438553";
double lon1 = strtod(line.c_str(),NULL);
如果我写
cout << lon1;
它只会打印34.9439而不是34.9438553
我可以写
cout << setprecision(15) << lon1;
并且它可以工作,但是我需要变量lon1本身具有15位精度,因为我需要变量中的所有数字,而不仅是在将其打印到屏幕上时。
有人知道怎么做吗?
最佳答案
setprecision
设置打印的精度,而不是双精度。 strtod
读取double值至double值或字符串中可用精度的最小值(在这种情况下,以字符串为界)。
简而言之,通过使用lon1
,您已经具有strtod
中字符串的完整精度。