0

我需要将字符串转换为精度高达 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 位精度,因为我需要变量内的整个数字,而不仅仅是当我将它打印到屏幕上时。

有谁知道该怎么做?

4

1 回答 1

5

setprecision设置打印的精度,而不是双精度。strtod将双精度读入到双精度或字符串中可用的最小精度(在这种情况下,以字符串为界)。

简而言之,您已经lon1通过使用strtod.

于 2013-12-14T03:45:57.590 回答