# round

## Overview

The `round` statement is used to ensure that numeric values in a column are whole multiples of a specified number.

## Syntax

**`round`***`colName [direction]`***`[to nearest`***`value]`*

## Details

The `round` statement is used to round numbers to the nearest multiple of any integer or floating point number.

The parameters supported by `round` are as follows:

| Parameter   | Default | Purpose                                                                               |
| ----------- | ------- | ------------------------------------------------------------------------------------- |
| *colName*   | *n/a*   | The name of the column containing the values to round                                 |
| *direction* | `up`    | Whether to round to the next highest (`up` ) or lowest ( `down` ) multiple of *value* |
| *value*     | `1`     | A value determining the granularity of the rounding                                   |

The simplest form of the statement is `round colName`. This will use the defaults shown in the table above such that values are rounded to the next highest integer. Alternatively, the statement `round colName down` will round down to the nearest integer.

If the *value* argument is provided then the numbers in *colName* will be rounded up or down to the nearest multiple of *value*. For example the statement ...

`round Quantity up to nearest 5`

... will round the numbers in the column *Quantity* up to the next multiple of 5. Thus any number in *Quantity* higher than 10 and less than 15 will be rounded to 15.

{% hint style="info" %}
When specifying the *value* argument, floating point values are supported.
{% endhint %}

## Additional notes

The `round` statement observes the following rules:

* Non-numeric values in *colName* are ignored&#x20;
* Blank values, or a value of `0` in *colName* are ignored
* Numbers in *colName* that are already a whole multiple of *value* will not be modified

The `round` statement may be used in the body of a [where](https://olddocs.exivity.io/3.5.4/data-pipelines/transform/language/where) statement to perform conditional rounding.

## Examples

```
round Quantity                       # Round up to nearest integer
round Quantity down                  # Round down to nearest integer
round Quantity up to nearest 4       # Round up to next multiple of 4
round Quantity down to nearest 2     # Round down to next lowest even number

round Quantity up to nearest 0.5     # ie: 2.25 -> 2.5
round Quantity down to nearest 0.1   # ie: 23.34567 -> 23.3
round Quantity down to nearest 0.01  # ie: 23.34567 -> 23.34

where ( ([quantity] > 5) && ([quantity] <= 100) ) {
    round quantity up to nearest 10       # Force consumption in blocks of 10
}

where ([quantity] > 100) {
       round quantity up to nearest 5     # Better deals for larger consumption
}
```
