在不使用流的情况下设置双精度 (ios_base::precision)

新手上路,请多包涵

有没有办法在不使用流的情况下做到这一点?例如,像这样:

 double a = 6.352356663353535;
double b = a.precision(5);

代替:

 double a = 6.352356663353535;
std::cout.precision(5);
std::cout << a << std::endl;

我是 C++ 新手,我很好奇。提前致谢。

原文由 programmingNoob 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 257
1 个回答

我已经根据@john、@Konrad 和@KennyTM 的建议修改了代码。我已经检查它是否适用于负数。

 #include <cmath>
#include <cstdio>
using namespace std;
int main()
{
   double a = 6.352356663353535;
   double  intpart;
   double fractpart = modf (a, &intpart);
   fractpart  = roundf(fractpart * 100000.0)/100000.0; // Round to 5 decimal places
   double b = intpart + fractpart;
   printf("%.5lf", b);
}

输出

6.35236

原文由 Phillip Ngan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题