【问题标题】:Ceiling of a number in JSTL/ELJSTL/EL 中数字的上限
【发布时间】:2012-07-31 07:53:55
【问题描述】:

在 JSTL 中,

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

返回2 和以下

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

返回1,我需要2一个数字的上限

在 JSTL 中是否有直接的方法来实现这一点(或者唯一的方法是使用适当的自定义标记)?

【问题讨论】:

    标签: jsp jstl el ceil


    【解决方案1】:

    &lt;fmt:formatNumber&gt; 使用的DecimalFormat 的默认舍入模式是RoundingMode.HALF_EVEN。没有办法通过任何标签属性来改变它。只需将 0.5 添加到值不是奇数时,使其行为类似于 RoundingMode.CEILING

    <fmt:formatNumber value="${bean.number + (bean.number % 1 == 0 ? 0 : 0.5)}" 
        type="number" pattern="#" />
    

    【讨论】:

      【解决方案2】:

      试试这个代码:

      <fmt:formatNumber value="${N+(1-(N%1))%1}" type="number" pattern="#"/>
      

      其中 N 是变量的名称。

      问候

      【讨论】:

      • 这个方法的好处是,只要把它改成${N-(1-(N%1))%1},就可以很容易地把它变成地板舍入。
      • 你不是说 ${N-(N%1)} @AxeEffect 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2023-03-09
      • 2013-01-05
      • 2011-04-04
      相关资源
      最近更新 更多