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