我需要将字符串转换为精度最高为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中字符串的完整精度。

10-06 07:08