c++ - 正确格式化有错误的数字 (C++)

标签 c++ formatting numbers rounding

我有三组数字,一个测量值(在 0-1 范围内)两个错误(正负)。这些数字应与有效数字的数量一致地显示,四舍五入,对应于任一数字中的第一个非零条目。

如果测量是一个,则跳过此要求(即只需要考虑误差中的数字)。例如:

0.95637 (+0.00123, -0.02935) --> 0.96 +0.00 -0.03
1.00000 (+0.0, -0.0979) --> 1.0 +0.0 -0.1 (note had to truncate due to -ve error rounding up at first significant digit)

现在,通过取 log10(num) 很容易得到第一个非零数字,但我有一个愚蠢的时刻试图以一种干净的方式进行剥离和舍入。

所有数据类型都是 double 的,选择的语言是 C++。欢迎所有想法!

最佳答案

使用

cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);

在你输出数字之前应该做你正在寻找的。

编辑:举个例子

double a = 0.95637;
double b = 0.00123;
double c = -0.02935;

cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
cout << a << endl;
cout << b << endl;
cout << c << endl;

将输出:

0.96
0.00
-0.03

进一步编辑:您显然必须调整精度以匹配您的有效数字。

关于c++ - 正确格式化有错误的数字 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/958374/

相关文章:

c++ - 子类化子窗口 C++

.net - 将货币/小数转换为字符串

PHP - 删除任何字母前的任何数字

python - 编写数论程序

c# - 在 C# 中向上或向下舍入值

c++ - const 关键字在函数声明中的位置

C++ Fstream 替换特定行?

c++ - 类体之外的成员函数定义导致错误

java - 如何在JLabel中显示 float ?

c# - 如何使用 System.Json 漂亮地打印?