2017-08-04 64 views
0

我是一个java新手,所以我需要你的帮助,我正在一个项目上工作! 我定义了一些柜台,这是我将要使用:Java分部使用BigDecimal

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

为什么你使用'BigDecimal'呢?并阅读有关整数除法(结果也将是整数)。 – Henry

+0

使用JSTL和格式https://www.tutorialspoint.com/jsp/jstl_format_formatnumber_tag.htm - 不应该有你的Java jsp –

回答

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)

Returns a BigDecimal whose value is (this/divisor), and whose scale is this.scale(). If rounding must be performed to generate a result with the given scale, the specified rounding mode is applied.

+0

@Cheatan chadha我有2个问题:你为什么写,3?并且这里的操作顺序是否有效?我的意思是第一次失败和接受的总和,然后是除法:接受/(接受+失败)。谢谢。 – frusciante

+0

我在这里使用了三舍入模式,因为我希望除法结果多达3位小数,您可以根据您的要求对其进行修改。操作顺序确实记得简单的BODMAS规则。 –

+0

你能澄清一下这条语句:** BigDecimal java.math.BigDecimal.divide(BigDecimal divisor,int roundingMode)**因为我得到错误。我导入了lib: <%@ page import =“java.math.BigDecimal”%>,所以我写了如下的粗体部分:BigDecimal.divide(BigDecimal divisor,int roundingMode)。但我得到错误,它说删除除数并删除int;但ofc它会给我错误时再次删除它们,因为roundingMode无法解析为变量。正如我所说我是完全新手,所以我需要帮助和澄清。谢谢:) – frusciante