賓果。我的問題根本不在EL中。原來我意外地在數據庫中有一些浮點數字段。當我將它們改回小數點後,一切都落空了。
似乎如果你從MySQL中取出一個十進制數,你會得到一個BigDecimal。所以這個詞畢竟是有序的。
謝謝大家的意見。
看到:
<c:set var="tests" value="123.45"/>
<br>tests: ${tests} -- <%= pageContext.findAttribute("tests").getClass() %>
<c:set var="testl" value="${3}"/>
<br>testl: ${testl} -- <%= pageContext.findAttribute("testl").getClass() %>
<c:set var="testd" value="${123.45}"/>
<br>testd: ${testd} -- <%= pageContext.findAttribute("testd").getClass() %>
<c:set var="testbd" value="<%= new BigDecimal(\"123.45\") %>"/>
<br>testbd: ${testbd} -- <%= pageContext.findAttribute("testbd").getClass() %>
<c:set var="testbd" value="${testbd+1}"/>
<br>testbd: ${testbd} -- <%= pageContext.findAttribute("testbd").getClass() %>
<sql:query var="items">
SELECT * FROM items WHERE itemid=?;
<sql:param value="55" />
</sql:query>
<c:set var="testdb" value="${items.rows[0].price}"/>
<br>testdb: ${testdb} -- <%= pageContext.findAttribute("testdb").getClass() %>
<%-- output
tests: 123.45 -- class java.lang.String
testl: 3 -- class java.lang.Long
testd: 123.45 -- class java.lang.Double
testbd: 123.45 -- class java.math.BigDecimal
testbd: 124.45 -- class java.math.BigDecimal
testdb: 129.95 -- class java.math.BigDecimal
--%>
我聽說的BigDecimal是專爲這樣的事情。 雖然我不是專家。 –
通過互聯網搜索。這個問題已經得到解答:[每個計算機科學家應該知道的關於浮點運算的知識](http://www.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf)。簡短的回答:使用'BigDecimal'。 –
''對於視圖很有幫助,因爲大多數客戶不會看到2位以上的小數; 此外,您可以添加貨幣符號,這非常好。 –