给定两个数字,其中 A <= B
,例如 A = 9
和 B = 10
,我正在尝试计算 A 相对于 B 的较小百分比。 我需要将百分比作为 int
。例如,如果结果是 10.00%,则int
应该是 1000。
这是我的代码:
int A = 9;
int B = 10;
int percentage = (((1 - (double)A/B) / 0.01)) * 100;
我的代码返回了999而不是1000。与使用 double
相关的一些精度丢失了。
在我的情况下,有没有方法可以避免失去精度?
((B-A) / (double)B) * 100.0
有什么问题吗?另外请注意,浮点格式中无法精确表示0.01,因此会在你所编写的计算中引入一些误差。 - Dale Hagglund