【问题标题】:C++ convert string to double with precisionC ++将字符串精确转换为双精度
【发布时间】:2014-01-01 23:39:07
【问题描述】:

我需要将字符串转换为精度不超过 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 位精度,因为我需要变量内的所有数字,而不仅仅是在我将其打印到屏幕上时。

有人知道怎么做吗?

【问题讨论】:

    标签: c++ string double atof strtod


    【解决方案1】:

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

    简而言之,您已经通过使用strtod 获得了lon1 中字符串的完整精度。

    【讨论】:

      猜你喜欢
      • 2013-10-10
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多