我有一个数字列表(例如):
98,
77,
55,
11
总价值为:241
我尝试使用以下方法计算百分比:
(int) (((double) quantity / totalQuantity) * 100);
(大多数情况下)这有效,但是有时合并的百分比不是100%。我尝试使用Math.ceil
或floor
,但仍然遇到此问题。
编辑:
让我提供一些背景知识,因为如果我的情况是计算数字,那您是对的:
我的装运中有物品总数241
,并且有4种物品(98, 77, 55, 11)
。我需要向用户显示每批货物的百分比。
谢谢
答案 0 :(得分:6)
这是正常现象,例如使用数字5、5、5,您将获得33%的三倍,总计为99%。
这里的问题是舍入和加法不可互换。
答案 1 :(得分:0)
问题与数学有关,我们进行除法运算时不会停止(重复数字),例如三个2 + 1 + 1
的小数平均值为4/3
,但其十进制的平均数不会停止,所以当您添加小数点1.33 + 1.33 + 1.33
时,您不会得到4
而不是3.99
,因为我们无法执行无穷次的除法,我们会停在小数点后的特定位数结果,平均值可能不完全等于总数。