निम्नलिखित हमेशा के रूप में आप उम्मीद करेंगे व्यवहार न करे:परीक्षण करता है, तो एक BigDecimal मूल्य एक JSP ईएल अभिव्यक्ति में शून्य है
<c:if test="${someBigDecimal == 0}">
someBigDecimal 0 मान है, लेकिन 0 से पैमाने अन्य है, == ऑपरेशन झूठी वापसी करता है। यही है, जब यह कुछ बिगडिसीमल नया बिगडिसीमल ("0") होता है, तो यह सच होता है, लेकिन जब कुछ बिगडिमेमल नया बिगडेसिमल ("0.00") होता है तो यह गलत होता है।
इस JSP 2.0, 2.1, और 2.2 विनिर्देशों, जो राज्य का परिणाम है:
< के लिए,>, < =,> =:
तो ए या बी BigDecimal है, मजबूर दोनों ए और बी बिगडिसीमल और A.compareTo (B) के वापसी मूल्य का उपयोग करें।
के लिए ==, =:
ए या बी BigDecimal है, तो दोनों ए और BigDecimal के लिए बी और फिर विवश:
- तो ऑपरेटर == है, लौटने के एक .equals (बी)
- तो ऑपरेटर है! =, वापसी! A.equals (बी)
इसका मतलब है ==
और !=
ऑपरेटरों के परिणामस्वरूप .equals()
विधि पर कॉल किया गया, जो न केवल मूल्यों की तुलना करता है, बल्कि बिगडेसिमल के पैमाने की तुलना करता है। अन्य तुलना ऑपरेटर के परिणामस्वरूप .compareTo()
विधि पर कॉल किया जाता है, जो केवल मूल्यों की तुलना करता है।
, निम्नलिखित काम करेगा:
<c:if test="${not ((someBigDecimal < 0) or (someBigDecimal > 0))}">
लेकिन यह नहीं बल्कि बदसूरत है, वहाँ यह करने के लिए एक बेहतर तरीका है?
अपने प्रश्न क्या है? – kcdragon
@ user617090 बस सोच रहा है कि इससे निपटने का सबसे अच्छा तरीका क्या है। मैंने यह स्पष्ट करने के लिए प्रश्न संपादित किया है। –
यदि आप '== 0.0' का उपयोग करते हैं तो क्या होता है? –