JSTL算术失去精度

时间:2015-04-14 17:16:13

标签: jstl

为什么这个JSTL块导致0.9999999999999999,修复是什么?

<c:set var="one" value="0.1"/>
<c:set var="two" value="0.7"/>
<c:set var="three" value="0.1"/>
<c:set var="four" value="0.1"/>
<c:out  value="${one+two+three+four}"/>

1 个答案:

答案 0 :(得分:0)

JB Nizet的评论是正确的,但这是如何处理它。

处理时应考虑使用fmt:formatNumber函数 浮点数字。这是一个网址:http://www.tutorialspoint.com/jsp/jstl_format_formatnumber_tag.htm

这是一个例子:

<c:set var="one" value="0.1"/>
<c:set var="two" value="0.7"/>
<c:set var="three" value="0.1"/>
<c:set var="four" value="0.1"/>
<fmt:formatNumber value="${one+two+three+four}" maxFractionDigits="2" />

确保在JSP代码的顶部包含此行:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>