代码之家  ›  专栏  ›  技术社区  ›  user1073214

如何在表达式语言(EL)中将double或float值转换为int而不进行舍入?

  •  5
  • user1073214  · 技术社区  · 12 年前

    我在JSP中使用表达式语言(EL)。

    <c:set var="noOfPages" value="${numItems/itemsPerPage}" />
    
    <fmt:formatNumber var="noOfPagesRounded" value="${noOfPages}" maxFractionDigits="0" />
    
    <c:if  test="${(numItems % itemsPerPage) > 0}">
        <c:set var="noOfPages" value="${noOfPagesRounded + 1}"/>
    </c:if >
    

    如您所见,我正在计算需要显示的页数 x 每页的结果数。

    这并不是一直有效的,因为在第2行,即。 formatNumber 标签是我的除法结果的四舍五入,我不想被四舍五舍五入。

    即,对于73条记录,每页20条需要4页,但我得到的是结果5,因为在第2行,它是结果3.65到4的四舍五入,但我想要 noOfPagesRounded=3

    我应该如何转换 float double 中的值 int 不取整?

    1 回复  |  直到 12 年前
        1
  •  7
  •   Martin Wilson    12 年前

    如果您想将noOfPagesRounded设置为floor(noOfPages),请尝试此操作(EL中没有floor功能):

    <fmt:formatNumber var="noOfPagesFloored" value="${noOfPages-(noOfPages%1)}"  maxFractionDigits="0" />