我需要将字符串转换为double,精度最高可达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位数的精度,因为我需要变量中的整个数字,而不仅仅是当我将它打印到屏幕时。
有谁知道怎么做?
答案 0 :(得分:4)
setprecision
设置打印的精度,而不是double的精度。 strtod
读取double或string中可用精度的最小值的两倍(在这种情况下由字符串限定)。
简而言之,您已使用lon1
在strtod
中获得字符串的完整精度。