# ROUND (number)

Syntax

round_number::=

Description of the illustration round_number.gif

Purpose

`ROUND` returns `n` rounded to `integer` places to the right of the decimal point. If you omit `integer`, then `n` is rounded to zero places. If `integer` is negative, then `n` is rounded off to the left of the decimal point.

`n` can be any numeric datatype or any nonnumeric datatype that can be implicitly converted to a numeric datatype. If you omit `integer`, then the function returns the value `ROUND`(n, 0) in the same datatype as the numeric datatype of `n`. If you include `integer`, then the function returns `NUMBER`.

`ROUND` is implemented using the following rules:

1. If `n` is 0, then `ROUND` always returns 0 regardless of `integer`.

2. If `n` is negative, then `ROUND`(n, integer) returns -`ROUND`(-n, integer).

3. If `n` is positive, then

```ROUND(n, integer) = FLOOR(n * POWER(10, integer) + 0.5) * POWER(10, -integer)
```

`ROUND` applied to a `NUMBER` value may give a slightly different result from `ROUND` applied to the same value expressed in floating-point. The different results arise from differences in internal representations of `NUMBER` and floating point values. The difference will be 1 in the rounded digit if a difference occurs.

Table 2-10, "Implicit Type Conversion Matrix" for more information on implicit conversion and "Floating-Point Numbers" for more information on how Oracle Database handles `BINARY_FLOAT` and `BINARY_DOUBLE` values

Examples

The following example rounds a number to one decimal point:

```SELECT ROUND(15.193,1) "Round" FROM DUAL;

Round
----------
15.2
```

The following example rounds a number one digit to the left of the decimal point:

```SELECT ROUND(15.193,-1) "Round" FROM DUAL;

Round
----------
20
```