【问题标题】:How to get decimal value on jsp without rounding如何在不四舍五入的情况下在jsp上获取十进制值
【发布时间】:2013-12-04 05:22:31
【问题描述】:

我在控制器上得到大十进制值 706.680988,我在 jsp 上传递它并仅显示 3 个小数点。我想在前端获得值 706.680,但它会将值四舍五入为 706.681。请让我知道如何在不四舍五入的情况下获得 jsp 的确切值。

下面的代码在 jsp 上使用 formatNumber jstl 标记,其中 myTotal 为 706.680988

<fmt:formatNumber type="number" value="${myTotal}" groupingUsed="false" maxFractionDigits="3" />

是我们可以在这里使用的任何其他 jstl 标记吗?请提供带有代码 sn-p 的解决方案。谢谢

【问题讨论】:

    标签: spring jsp jstl


    【解决方案1】:

    使用

    <fmt:formatNumber value="${Value}" maxFractionDigits="3"/>
    

    它几乎等同于 Math.round,但不完全一样。 Math.round 方法总是将 0.5 向上舍入到最接近的整数。 数字格式化程序使用 ROUND_EVEN 方法,这意味着如果四舍五入 0.5,它将四舍五入到最接近的 EVEN 数字(可能向上或向下)

    How do I round a number in JSTL?

    【讨论】:

    • 我刚刚注意到 Java 6 和 Java 8 之间的行为不同。在 Java 8 中,舍入与 Math.round 中的相同,但在 Java 6 中是 ROUND_EVEN。似乎jsp标签在内部使用NumberFormat.getNumberInstance,并且该方法改变了它的行为。
    【解决方案2】:

    你可以在下面的例子中使用它

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
    <fmt:formatNumber value="${foo}" pattern="0.0000"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多