在Java中,表示和操作概率和百分比的正确方法是什么?

在Java中,表示和操作概率和百分比的正确方法是什么?,java,Java,在Java中计算和处理概率,然后将其表示为百分比时,最好使用什么数据结构来表示它们 本机的double和float似乎不是特别理想的候选者,因为它们有奇怪的舍入问题,当舍入发生多次并变得复杂时,可能会引入错误 BigInteger在计算排列和组合时效果很好,BigDecimal似乎是非整数值的一个很好的候选者,但是否已经有更适合处理百分比的方法了 注意:在这种情况下,所计算的概率本质上与涉及一副牌的概率相似,但有数百张牌。对于更倾向于数学的人,我特别与之合作。这是我将使用双精度的方法,我认为使用

在Java中计算和处理概率,然后将其表示为百分比时,最好使用什么数据结构来表示它们

本机的
double
float
似乎不是特别理想的候选者,因为它们有奇怪的舍入问题,当舍入发生多次并变得复杂时,可能会引入错误

BigInteger
在计算排列和组合时效果很好,
BigDecimal
似乎是非整数值的一个很好的候选者,但是否已经有更适合处理百分比的方法了


注意:在这种情况下,所计算的概率本质上与涉及一副牌的概率相似,但有数百张牌。对于更倾向于数学的人,我特别与之合作。

这是我将使用双精度的方法,我认为使用双精度将是获得良好的百分比值的最佳方法

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); 

说到概率,我怀疑你会从分数中受益

看看这个问题:


否则我认为
BigDecimal
是您最好的选择。但是要注意
java.lang.arithmetricException:非终止十进制扩展

它们总是整数百分比吗?如果是这样,请使用整数。BigInteger是多余的,因为您的数字不会比普通整数中的数字大。不,百分比通常在[0,1]范围内,但会以
23.29945%
等格式显示
BigInteger
用于阶乘计算。将事物作为分数保留到最后一分钟(然后切换到百分比)似乎是个好主意+1您不会有任何舍入问题(至少:)