# **Overview of Arithmetic Operators**

| Name | Description |
|---|----|
| [%,MOD](mod.md) | Take the rest |
| [*](multiplication.md) | Multiplication |
| [+](addition.md) | Addition |
| [-](minus.md) | Subtraction |
| [-](unary-minus.md) | minus sign |
| [/](division.md) | Division |
| [DIV](div.md) | Integer Divide |

— For `-`, `+` and `*`, if both operand values are integers, the calculation results will be calculated with BIGINT (64-bit) accuracy.

— If both operand values are integers and either of them are unsigned, the result is an unsigned integer.

— If any of the operation values in `+`, `-`, `/`, `*`, `%` is a real value or string value, the accuracy of the result is the maximum precision of the operation.

When using `/` for division, when using two exact value operations, the accuracy range of the result is the accuracy range of the first operation value plus the value of the `div_precision_increment` system variable. For example, the result of the expression 5.05 / 0.014 has a decimal 8 bit precision (360.71428571).

<!--The above paragraph needs to be reviewed-->

These rules apply to each operation, such as nesting calculations to take the accuracy of each component. Therefore, (14620 / 9432456)/(24250 / 9432456) is first parsed to (0.0014)/(0.0026), and the final result has 16 decimal places (0.6028865979381443).

## **limit**

- The arithmetic operator is only suitable for calculations between numbers.
- Ensure the accuracy criteria for the calculation of each component and child components, see [Overview of cast functions and operators](../cast-functions-and-operators/cast-functions-and-operators-overview.md).
