鉴于两个双打,我需要计算百分比并将它们表达到最多2位小数。最有效的方法是什么?
例如
x = 10.2476
y = 100
我会回10.25。
与运行时速度一样高效。它需要用2位小数表示x / y * 100。
答案 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,以百分比显示 - 没有问题。