c++ - 在不使用流的情况下设置 double (ios_base::precision)

标签 c++ double precision

有没有办法不使用流来做到这一点?例如,像这样:

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

代替:

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

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

最佳答案

我已经根据@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

关于c++ - 在不使用流的情况下设置 double (ios_base::precision),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12349323/

相关文章:

c++ - undefined symbol : __gnat_rcheck_CE_Invalid_Data when linking ADA with C++

c++ - 'struct ListNode' 类型的空指针内的成员访问

c++ - 我应该如何在 C++ 中为 unordered_map 定义我自己的哈希函数

python - 为什么优化模型精度会由于没有预测样本而引发错误 : Precision is ill-defined and being set to 0. 0?

c++ - 不同的数学 CPU 会产生相同的浮点结果吗?

facebook - 为什么17位及以上的数字会自动变成偶数?

c++ - 从点云生成近似 NURBS 曲面

c++ - 编译器如何选择给 auto 赋值?

java - 将编辑文本值转换为 double 值 - 始终为零(android studio,java)

DB2 比较具有非常大的数字的数据