日期:2014-05-18  浏览次数:20747 次

jstl显示小数的问题,请教。。。
大家好,我用一个SQL   语句查询出一个结果,在mysql   query   browser上显示结果为0.3,   但是我用jstl   <c:out   value= " "> 显示出来确是一个很长的小数:0.30000000000000004   ,

请问是什么原因?如何解决?

------解决方案--------------------
你没有用格式化
java.util.Currency 类的引入, <fmt:formatNumber> ****作的 currencyCode 属性优先权超过
currencySymbol 属性。但是对于较老版本的 JDK 而言, currencySymbol 属性具有优先权。
maxIntegerDigits 、 minIntegerDigits 、 maxFractionDigits 和
minFractionDigits 属性用来控制小数点前后所显示的有效数字的个数。这些属性要求是整数值。
groupingUsed
属性带有布尔值并控制是否要对小数点前面的数字分组。例如,在英语语言环境中,将较大数的每三个数字分为一组,每组用逗号定界。其它语言环境用句点或空格来定界这样的分组。该属性的缺省值为
true 。
清单 3 显示了一个简单的货币示例,它本身是 清单 1 的扩展。在本例中,不指定 currencyCode 或
currencySymbol 属性。而货币是由语言环境设置确定的。

清单 3. 使用 <fmt:formatNumber> 标记显示货币值

<table>
<fmt:timeZone value= "US/Eastern ">
<c:forEach items= "${entryList} " var= "blogEntry "
varStatus= "status ">
<c:if test= "${status.first} ">
<tr> <td align= "left " class= "blogDate ">
<fmt:formatDate value=
"${blogEntry.created} " dateStyle= "full "/>
</td> </tr>
</c:if>
<tr> <td align= "left " class= "blogTitle ">
<c:out value= "${blogEntry.title} " escapeXml= "false "/>
</td> </tr>
<tr> <td align= "left " class= "blogText ">
<c:out value= "${blogEntry.text} " escapeXml= "false "/>
<font class= "blogPosted ">
[My <fmt:formatNumber value= "0.02 " type= "currency "/>
posted at <fmt:formatDate value= "${blogEntry.created} "
pattern= "h:mm a zz "/> ]
</font>
</td> </tr>
</c:forEach>
</fmt:timeZone>
</table>