This table shows the valid combinations of types when the operator is *, / or %. To understand the calculation of the expression A * B, find the intersection of the row for A's type and the column for B's type. Consult the numbered notes for the details of casting or conversion.
|
|
|
|
|
|
|
|
Other (text) |
|
|
|
X |
X |
X |
X |
X |
X |
X |
X |
|
|
X |
X |
X |
X |
X |
X |
X |
X |
|
|
X |
X |
X |
X |
X |
X |
X |
X |
|
|
X |
X |
X |
1 |
1 |
1 |
X |
X |
|
|
X |
X |
X |
1 |
1 |
1 |
X |
X |
|
|
X |
X |
X |
1 |
1 |
1 |
X |
X |
|
|
X |
X |
X |
X |
X |
X |
X |
X |
|
Other (text) |
X |
X |
X |
X |
X |
X |
X |
X |
Notes for multiplication, division, and remainder operations:
Integer > Double > BigDecimal until both operands have same type, then perform operation. The result is of the promoted type. (Conversion is directly to target type without performing additional intermediate conversions.)@divide(dividend, divisor, mode) with Integer or Decimal operations to compute a result that contains at least two decimal places and rounds half values up: @divide(10, 6) = 1.67. Rounding modes are the same as for the BigDecimal class:
ceiling — round to a more positive integerdown — round towards zerofloor — round to a more negative numberhalf_down — round to the nearest neighbor, where an equidistant value is rounded downhalf_even — round to the nearest neighbor, where an equidistant value is rounded to an even valuehalf_up — round to the nearest neighbor, where an equidistant value is rounded upunnecessary — assert that no rounding is necessaryup — round away from zero