C ++将字符串转换为精度加倍

时间:2013-12-14 03:43:27

标签: c++ string double atof strtod

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

有谁知道怎么做?

1 个答案:

答案 0 :(得分:4)

setprecision设置打印的精度,而不是double的精度。 strtod读取double或string中可用精度的最小值的两倍(在这种情况下由字符串限定)。

简而言之,您已使用lon1strtod中获得字符串的完整精度。