我有3个BigDecimal值,我想找到3个值来表示它与总和的比率,这些比率应该加起来为1.但是,我遇到了以下错误:
scopes = "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me"
正如您所看到的,3个比率 的总和不等于1 。我可以将比例从4改为5,这将解决问题。 然而我使用上面相同的代码来计算其他不同的数字。因此,我试图找到一种正确的方法, 适用于任何数字的X比率 。
答案 0 :(得分:4)
只要您使用舍入,就会有效地同意结果不是绝对正确的。因此,如果目标是使比率之和等于1,那么只需执行
BigDecimal aRatio = a.divide(sum, 4, BigDecimal.ROUND_HALF_UP);
BigDecimal bRatio = b.divide(sum, 4, BigDecimal.ROUND_HALF_UP);
BigDecimal cRatio = BigDecimal.ONE.subtract(aRatio.add(bRatio));