我是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或者......你能帮我找到成功率吗?我希望它足够清楚。
答案 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()。如果必须执行舍入以生成具有给定比例的结果,则应用指定的舍入模式。