【发布时间】:2009-06-05 22:07:07
【问题描述】:
我有三组数字,一个测量值(在 0-1 范围内),两个误差(正数和负数)。这些数字的显示应与有效数字的数量一致,四舍五入,对应于任一数字中的第一个非零条目。
如果是 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) 很容易获得第一个非零数字,但我有一个愚蠢的时刻,试图让剥离和舍入以一种干净的方式工作。
所有数据类型都是双精度类型,选择的语言是 C++。欢迎所有和任何想法!
【问题讨论】:
-
您的实现是否存在不使用库调用的限制?
-
还不是很清楚。 Ehy 第一行的有效位数是 2,第二行是 1?换句话说,为什么第一行+0.00123被格式化为+0.00,而第二行+0.0被格式化为+0.0?
-
我不太明白 - 你说你想显示第一个非零数字,但你的例子显示 +0.00,而不是 +0.001。
-
它表示任一数字中的第一个非零条目。对我来说似乎很奇怪,但他列出的规则与显示的数据一致。
标签: c++ formatting numbers rounding