我有一个要求,我有4个浮动变量代表百分比,总和是100.我需要将浮动变量转换成长,LONG百分比的总和应该是100。
如果我执行以下操作
long longPercentage1 = (long) (floatPercentage1 + 0.5);
long longPercentage2 = (long) (floatPercentage2 + 0.5);
long longPercentage3 = (long) (floatPercentage3 + 0.5);
long longPercentage4 = (long) (floatPercentage4 + 0.5);
它大部分时间都有效。但是如果floatPercentages如下所示:
95.95 - > 96
1.36 - > 1
1.35 - > 1
1.34 - > 1
在上述情况下,总数达到96 + 1 + 1 + 1 = 99。
现在,在以下一组浮点值中,总数达到101。 98.2 - > 98
0.61 - > 1
0.60 - > 1
0.59 - > 1
真的很感激,如果有人能提供一个好的解决方案。
答案 0 :(得分:1)
没有公式可以只应用于每个百分比,将它们转换为long
并始终以100结尾。但您可以决定调整哪个变量以确保总是达到100当你把它们加在一起时:
long longPercentage1 = (long) (floatPercentage1 + 0.5);
long longPercentage2 = (long) (floatPercentage2 + 0.5);
long longPercentage3 = (long) (floatPercentage3 + 0.5);
long longPercentage4 = 100 - longPercentage1 - longPercentage2 - longPercentage3;
(我采用longPercentage4
来弥补差异,但您可以选择四个百分比中的任何一个,或者甚至随机改变哪一个将构成差异)
答案 1 :(得分:0)
我的技术主管提出了以下方法,我认为这是最好的解决方案。