JSTL舍入/减少号码

use*_*375 5 java tags jsp jstl rounding

这可能是一个愚蠢的问题,但是假设seconds我的JSP页面中有一个变量,其值为779.现在我想通过执行以下操作将其转换为分钟和秒:

    <c:set var="${seconds / 60}" value="min"/>
    <c:set var="${seconds mod 60}" value="sec">
Run Code Online (Sandbox Code Playgroud)

这样我得到min = 12.983333和sec = 59.0.

现在我想合并两个并将结果显示为12:59.我面临的问题是min不断向上调整到13.我尝试了很多东西,例如:

    <fmt:parseNumber var="minutes" integerOnly="true" type="number" value="${min}" />

    <fmt:formatNumber type="number" pattern="###" value="${min}" var="minutes" />

    fn:substringBefore(min, '.')

    maxFractionDigits="0"

    // and so on...
Run Code Online (Sandbox Code Playgroud)

但他们所有人都只是一致地回归13.在这一点上我有点无能为力.但我可能错过了一些东西.我希望这里的某个人有一个关于可能出错的想法或暗示.

-编辑

下面的代码最终使它工作.我不知道出了什么问题,因为它现在也在使用"/".也许其他地方有些小错误.不过非常感谢你的时间:) Kudos!

    <c:set var="min" value="${fn:substringBefore((seconds div 60), '.')}"/>  
    <fmt:formatNumber var="sec" pattern="##" value="${seconds mod 60)}"/>   
Run Code Online (Sandbox Code Playgroud)

小智 9

这(下面)应该是唯一安全的方法.pattern ="##"不受支持,minIntegerDigits ="2"更简单,更清晰.

<c:set var="minutes" value="${fn:substringBefore(seconds div 60, '.')}"/> 
<fmt:formatNumber var="seconds" minIntegerDigits="2" value="${ seconds - (minutes*60) }"/>
Run Code Online (Sandbox Code Playgroud)