Hi, guys:<br>  I am using Drools 4.0.7. I find a strange behavior. When my LHS is &quot;Message( varDouble == 99.9 )&quot; and &quot;varDouble&quot; equals &quot;new Double(99.9)&quot;, the condition is true. But when my LHS is &quot;Message( types.doubleType == 99.9 )&quot; and the &quot;doubleType&quot; field is also equal to &quot;new Double(99.9)&quot;, the condition is false. I debug the code, and find that: <br>
<br>  When the LHS is &quot;Message( varDouble == 99.9 )&quot;, the logic will handle the literal 99.9 as <i>Double.valueOf( “99.9” )</i>, and the comparison is between <i>(new Double(99.9)).doubleValue(</i>) and <i>Double.valueOf( “99.9” ).doubleValue()</i>,<br>
  When the LHS is &quot;Message( types.doubleType == 99.9 )&quot;, the logic is different from above. The comparison is between <i>new BigDecimal(<b>(Double) 99.9</b>, MathContext.DECIMAL64)</i> (which double value is 99.90000000000001) and <i>new BigDecimal(<b>“99.9”</b>, MathContext.DECIMAL64)</i> (which double value is 99.9). <br>
<br>  I think we need make things consistent. &quot;varDouble&quot; and &quot;types.doubleType&quot; are of the same type and value. It doesn&#39;t make sense to have different behavior just because of one field is nesting while the other is not.  I know Drools is using MVEL to evaluate the condition. But I am not sure it is a MVEL bug or Drools uses MVEL wrong. It will be much appreciated if you can give me any comments!<br>