如何在C / C ++中有效地计算两到十进制的精度?

时间:2014-02-21 04:37:35

标签: c++ performance math floating-point

鉴于两个双打,我需要计算百分比并将它们表达到最多2位小数。最有效的方法是什么?

例如

x = 10.2476
y = 100

我会回10.25。

与运行时速度一样高效。它需要用2位小数表示x / y * 100。

2 个答案:

答案 0 :(得分:1)

如果您确实需要固定点表示并将数字缩放100,请使用整数表示。因此x = 10.2476变为xi = 1025:

double x = 10.2476;
int xi   = ( x + 0.005 ) * 100;

在许多情况下,即使使用小于1的数字,也不需要浮点表示。

答案 1 :(得分:0)

"表达最多2位小数"表示输出中只有2 mantissa个数字。

10.2476-> 10
102.476 -> 1.0E+2,  NOT 100!
0.00102476 -> 1.0E-3 

因此,使用尾数,不可能使用浮点数或双精度显示结果。

printf中,键g和G设置有效位数。 %2g - 正好是2位小数。

至于计数,十进制除法不是问题操作(如+或 - )。所以,简单地将它们除以100,以百分比显示 - 没有问题。