将double转换为字符串,保持数字的高精度,C ++

时间:2013-11-25 15:06:15

标签: c++ string double decimal

我一直试图在没有C ++ 11(ToString)的情况下将double转换为字符串,但它只接受小数位数作为默认值为5。我怎么能改变它?

命令是:

    string a = static_cast<ostringstream*>( &(ostringstream()<<digits) )->str();

但它保持5位小数,而我想创建一个包含所有小数的字符串(例如100) 我知道,那么多小数并不重要。这是我正在做的一个练习点。

有什么建议吗?

非常感谢你的时间 干杯!

2 个答案:

答案 0 :(得分:5)

std::cout上使用IO操纵器setprecision,但适用于stringstream

// setprecision example from cplusplus.com
#include <iostream>     // std::cout, std::fixed
#include <iomanip>      // std::setprecision

int main () {
  double f =3.14159;
  std::cout << std::fixed << std::setprecision(9) << f << '\n';
  return 0;
}

顺便说一句,没有double会有100个有意义的数字,它是15或17,我忘了究竟有多少。

编辑:我忘记了,如果你可以使用C ++ 11 ......你可以(而且应该)使用to_string

#include <string>

// ....    
std::string f_str = std::to_string(f);

答案 1 :(得分:0)

这最终对我有用

      digits = 1.12345123451234;
      char buff[100];
      sprintf(buff, "%1.14f", digits);
      string a(buff);

感谢您在任何情况下检查

干杯