For some reason I read that as the modulus operator rather than "div"
So now I've regained my ability to read EL:
Precedence says do 100 < (2 div 0)The div operator casts both arguments to double and then divides in the normal way2.0/0.0 gives Double.POSITIVE_INFINITY which is > 100 (according to the JLS definition), so the expression is true overallNote the second observation is important and non-obvious: if EL coerced the div operands to long instead, there would have been an ArithmeticException. However, EL always coerces to doubles when doing division. This makes it impossible to do integer arithmetic in a straight-forward manner (which can occassionally be a nuisance).
${100 < infinity } and then infinilty being unknown
You are misunderstanding things here. The result of ${ 100 < (2/0) } does not resolve to the same as ${ 100 < infinity } since EL doesn't have an "infinity" literal---it isn't defined and would be treated as a scoped attribute (EL variable). However, the expression does indeed resolve to the numerical value (double primitive or Double object) of infinity on the right hand side of the < operator---there is no way to type this directly in an EL expression, but it is possible to get this value in a calculation (e.g. by division by zero). Then "100 < +infinity" is true (by JLS rules).
[ December 28, 2008: Message edited by: Charles Lyons ]