在Java中计算和操作概率,然后将其表示为百分比时,用于表示它们的最佳数据结构是什么?
本机double
和float
似乎不是特别理想的候选者,因为它们有奇怪的舍入问题,当舍入多次发生并且复杂时会引入错误。
BigInteger
适用于计算排列和组合,BigDecimal
似乎可能是非整数值的一个很好的候选者,但有没有更适合处理百分比的东西?< / p>
注意:在这种情况下,计算的概率在性质上与涉及卡片组的概率类似,但有数百张卡片。对于更多数学倾向,我特别使用Multivariate Hypergeometric_distributions。
答案 0 :(得分:5)
说到概率,我怀疑你会从使用分数中受益。
看看这个问题:
否则我认为BigDecimal
是您的最佳选择。但请注意java.lang.ArithmeticException: Non-terminating decimal expansion;
答案 1 :(得分:0)
这就是我对双重做的事情,我认为使用双倍对于获得百分比的良好价值是最好的...
import java.text.NumberFormat;
//instance variable:
private static NumberFormat percent = NumberFormat.getPercentInstance();
//inside any method or event:
myAprValue = userInput / 100;
percent = new DecimalFormat("0.0#%");
String st = percent.format(myAprValue);