使用BigDecimal的

时间:2017-08-04 05:45:41

标签: java rounding division bigdecimal

我是java的新手,所以我需要你帮助我正在进行的项目! 我定义了一些计数器,这些是我将使用的:

int[] acceptCounters = {};
int[] acceptFailCounters = {};

然后我像这样编写它们以获得与数据库的连接,并查看结果:

acceptCounters = guiops.getOfferStatitics(conn, "WS_GET_OFFER_ACCEPT");
acceptFailCounters = guiops.getOfferStatitics(conn, "WS_GET_OFFER_ACCEPT_PURCHASE_FAILED");*

我得到了那样的结果(我删除了HTML部分):

        *__html parts__*

        <%
            for (int i = 0; i < acceptCounters.length; i++) {
        %>

html部分

        <%=formatter.format((new BigDecimal(acceptCounters[i] + acceptFailCounters[i])).longValue())%>

        <%
            }
        %>

这些都没关系。我想要找到的是成功率,即 acceptCounters /(acceptCounters + acceptFailCounters)并查看2位小数。为了使它们保持相同的格式,我编写了如下的Java代码:

html部分

        <%
            for (int i = 0; i < acceptCounters.length; i++) {
        %>

html部分

        <%=formatter.format((new BigDecimal(acceptCounters[i] /(acceptCounters[i] + acceptFailCounters[i]))).longValue())%>

        <%
            }
        %>

但我看到的结果是0.它应该接近0.75或者......你能帮我找到成功率吗?我希望它足够清楚。

1 个答案:

答案 0 :(得分:1)

BigDecimal有自己的除法方法。你可以这样使用:

formatter.format((new BigDecimal(acceptCounters[i]).divide(new BigDecimal(acceptCounters[i]),3)).add(new BigDecimal(acceptFailCounters[i]));
  

BigDecimal java.math.BigDecimal.divide(BigDecimal divisor, int roundingMode)

     

返回一个BigDecimal,其值为(this / divisor),其标度为this.scale()。如果必须执行舍入以生成具有给定比例的结果,则应用指定的舍入模式。