Revision 46901 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/operator/DivOperator.java
DivOperator.java | ||
---|---|---|
27 | 27 |
return null; |
28 | 28 |
} |
29 | 29 |
int type = this.getType(op1, op2); |
30 |
if( (type & TYPE_BIGDECIMAL) == TYPE_BIGDECIMAL ) { |
|
31 |
BigDecimal value = getBigDecimal(op1,1).divide(getBigDecimal(op2,2)); |
|
32 |
return value; |
|
33 |
} |
|
34 | 30 |
if( (type & TYPE_DOUBLE) == TYPE_DOUBLE ) { |
35 | 31 |
double value = getDouble(op1,1) / getDouble(op2,2); |
36 | 32 |
checkDoubleValue(value); |
... | ... | |
41 | 37 |
checkDoubleValue(value); |
42 | 38 |
return value; |
43 | 39 |
} |
40 |
if( (type & TYPE_BIGDECIMAL) == TYPE_BIGDECIMAL ) { |
|
41 |
try { |
|
42 |
BigDecimal value = getBigDecimal(op1,1).divide(getBigDecimal(op2,2)); |
|
43 |
return value; |
|
44 |
} catch(ArithmeticException ex) { |
|
45 |
double v1 = getDouble(op1,1) / getDouble(op2,2); |
|
46 |
BigDecimal value = BigDecimal.valueOf(v1); |
|
47 |
return value; |
|
48 |
} |
|
49 |
} |
|
44 | 50 |
if( (type & TYPE_LONG) == TYPE_LONG ) { |
45 | 51 |
long value = getLong(op1,1) / getLong(op2,2); |
46 | 52 |
return value; |
Also available in: Unified diff