我有三组数字,一个测量值(在 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);
在你输出数字之前应该做你正在寻找的。p>
编辑:举个例子
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/