地板值不计算为100%

时间:2011-06-08 10:11:27

标签: php

--------------------------
Fruit                Trees
--------------------------
Apple                1098
Banana                500
Grapes                460
--------------------------
TOTAL                2058
--------------------------

现在,我想以百分比的形式找出每种水果类型有多少棵树。所以,这就是我做的事情

---------------------------------------------------------
 Apple              floor((1098*100)/2058)          53%
 Banana             floor(( 500*100)/2058)          24%
 Grapes             floor(( 460*100)/2058)          22%
---------------------------------------------------------
 TOTAL                                              99%

正如您所看到的,地板值损失1%

我需要逻辑,无论每种水果的价值如何,总数应达到100%。 上面是SAMPLE DATA,每个水果的树数,水果数量可以增加或减少。

3 个答案:

答案 0 :(得分:2)

您应该使用round()floorceil都不准确到100%。

这会导致一些百分比高于实际值,有些则更低。但是,看到你已经降低了百分比,我怀疑这是一个问题。

答案 1 :(得分:2)

只需使用round()代替floor()

但是要小心添加舍入的数字或百分比。更好地使用原始值来计算总数。

答案 2 :(得分:2)

我认为在某些情况下ROUND无法完美运行。例如:

如果原始百分比是:

苹果50.40 香蕉30.40 葡萄19.20

所有这三个值都会向下舍入,而你只剩下99%。

如果需要,您仍需要一些机制来检查总计100%并添加/减去特定值的百分比。