in src/main/java/org/apache/commons/ognl/OgnlOps.java [839:888]
public static int getNumericType( int t1, int t2, boolean canBeNonNumeric )
{
if ( t1 == t2 )
{
return t1;
}
if ( canBeNonNumeric && ( t1 == NONNUMERIC || t2 == NONNUMERIC || t1 == CHAR || t2 == CHAR ) )
{
return NONNUMERIC;
}
if ( t1 == NONNUMERIC )
{
t1 = DOUBLE; // Try to interpret strings as doubles...
}
if ( t2 == NONNUMERIC )
{
t2 = DOUBLE; // Try to interpret strings as doubles...
}
if ( t1 >= MIN_REAL_TYPE )
{
if ( t2 >= MIN_REAL_TYPE )
{
return Math.max( t1, t2 );
}
if ( t2 < INT )
{
return t1;
}
if ( t2 == BIGINT )
{
return BIGDEC;
}
return Math.max( DOUBLE, t1 );
}
if ( t2 < MIN_REAL_TYPE ) {
return Math.max( t1, t2 );
}
if ( t1 < INT )
{
return t2;
}
if ( t1 == BIGINT )
{
return BIGDEC;
}
return Math.max( DOUBLE, t2 );
}