# Number

## Type

The `Number` type is used to represent arbitrary-precision signed decimal numbers (including integers), which are basically of the Java `BigDecimal` type. Literals of the `Number` type are exactly represented in memory with an unscaled arbitrary precision integer and a 32-bit integer scale (representation: unscaledValue * 10^(-scale)). We might not be able to represent the result of a division exactly in memory. Therefore we use a precision of 16 digits with `HALF_UP` rounding (round half away from zero).

A `Number` variable can be initialized or mutated by assigning it an integer or decimal literal or an expression of the `Number` type, e.g.

``````var e = 0.0000005;
var f = 3000;
var g = 10.0;``````
``````var d = 123456.789;
d = d + 44.1 * 3.14;``````

## Methods

#### `divideBy`

<function> Divides this number with another number. Infix operator: `/`.

Number

###### Arguments

other - Number - number to divide `this` with

###### Returns

Number - the result of dividing `this` with `other`, can have a fractional part

###### Usage

``````20 / 5 == 4
``````
``````2 / 4 == 0.5
``````

#### `greaterThan`

<function> Compare two numbers. Infix operator: `>`.

Number

other - Number

###### Returns

Boolean - `true` if `this` is greater than `other`, otherwise `false`

#### `greaterThanOrEqual`

<function> Compare two numbers. Infix operator: `>=`.

Number

other - Number

###### Returns

Boolean - `true` if `this` is greater than or equal to `other`, otherwise `false`

#### `isInteger`

<function> Returns a `Boolean` value that indicates whether the `Number` is equivalent to an integer (has no fractional part different from 0).

Number

Boolean

###### Usage

``````51.4.isInteger() == false
``````
``````51.000.isInteger() == true
``````

#### `lessThan`

<function> Compare two numbers. Infix operator: `<`.

Number

other - Number

###### Returns

Boolean - `true` if `this` is less than `other`, otherwise `false`

#### `lessThanOrEqual`

<function> Compare two numbers. Infix operator: `<=`.

Number

other - Number

###### Returns

Boolean - `true` if `this` is less than or equal to `other`, otherwise `false`

#### `negative`

<function> Negates this number.

Number

Number

###### Usage

``````(20).negative() == (-20)
``````
``````(-5).negative() == 5
``````

#### `minus`

<function> Subtracts another number from this one. Infix operator: `-`.

Number

###### Arguments

other - Number - number to subtract from `this`

###### Returns

Number - the difference between `this` and `other`

#### `multiplyBy`

<function> Multiplies this number with another number. Infix operator: `*`.

Number

###### Arguments

other - Number - number to multiply `this` with

###### Returns

Number - the product of `this` and `other`

#### `plus`

<function> Adds another number to this one. Infix operator: `+`.

Number

###### Arguments

other - Number - number to add to `this`

###### Returns

Number - the sum of `this` and `other`

#### `remainder`

<function> Returns the remainder of dividing this number with another number. Infix operator: `%`.

Number

###### Arguments

other - Number - number to divide `this` with

###### Returns

Number - the remainder when dividing `this` with `other`

#### `roundTo`

<function> Rounds this number to a `Number` with (non-negative) `roundTo` digits behind the decimal point. Rounding method used is `HALF_UP`. `roundTo(0)` rounds to an integer value.

Number

roundTo - Number

Number

###### Usage

``````(51.7654).roundTo(1) == 51.8
``````
``````(51.7654).roundTo(3) == 51.765
``````
``````(51.7654).roundTo(0) == 52
``````
``````(-51.7654).roundTo(2) == -51.77
``````
``````(0.0045678).roundTo(4) == 0.0046
``````

## Inherited methods

#### `toText`

<function> Obtain the `Text` representation of `this`.

T

T

###### Returns

Text - the `Text` representation of `this`

###### Usage

Converts a `Number` to `Text`.

``````(51.4).toText() == "51.4"
``````
``````(0.345).toText() == "0.345"
``````
``````3000.toText() == "3000"
``````