# FixedNumber

A **FixedNumber** is a fixed-width (in bits) number with an internal base-10 divisor, which allows it to represent a decimal fractional component.

The **FixedNumber** class is directly imported from The Ethers Project. The complete documentation can be found in the official ethers docs.

## Creating Instances

The FixedNumber constructor cannot be called directly. There are several static methods for creating a FixedNumber.

`FixedNumber.from( value [ , format = "fixed" ] ) ⇒ FixedNumber`

`FixedNumber.from( value [ , format = "fixed" ] ) ⇒ FixedNumber`

Returns an instance of a **FixedNumber** for *value* as a *format*.

`FixedNumber.fromBytes( aBytesLike [ , format = "fixed" ] ) ⇒ FixedNumber`

`FixedNumber.fromBytes( aBytesLike [ , format = "fixed" ] ) ⇒ FixedNumber`

Returns an instance of a **FixedNumber** for *value* as a *format*.

`FixedNumber.fromString( value [ , format = "fixed" ] ) ⇒ FixedNumber`

`FixedNumber.fromString( value [ , format = "fixed" ] ) ⇒ FixedNumber`

Returns an instance of a **FixedNumber** for *value* as a *format*. The *value* must not contain more decimals than the *format* permits.

`FixedNumber.fromValue( value [ , decimals = 0 [ , format = "fixed" ] ] ) ⇒ FixedNumber`

`FixedNumber.fromValue( value [ , decimals = 0 [ , format = "fixed" ] ] ) ⇒ FixedNumber`

Returns an instance of a **FixedNumber** for *value* with *decimals* as a *format*.

## Properties

`fixednumber.format`

`fixednumber.format`

The FixedFormat of *fixednumber*.

## Methods

### Math Operations

`fixednumber.addUnsafe( otherValue ) ⇒ FixedNumber`

`fixednumber.addUnsafe( otherValue ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* **+** *otherValue*.

`fixednumber.subUnsafe( otherValue ) ⇒ FixedNumber`

`fixednumber.subUnsafe( otherValue ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* **-** *otherValue*.

`fixednumber.mulUnsafe( otherValue ) ⇒ FixedNumber`

`fixednumber.mulUnsafe( otherValue ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* **×** *otherValue*.

`fixednumber.divUnsafe( otherValue ) ⇒ FixedNumber`

`fixednumber.divUnsafe( otherValue ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* **÷** *otherValue*.

`fixednumber.round( [ decimals = 0 ] ) ⇒ FixedNumber`

`fixednumber.round( [ decimals = 0 ] ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* rounded to *decimals*.

### Comparison and Equivalence

`FixedNumber.isZero() ⇒ boolean`

`FixedNumber.isZero() ⇒ boolean`

Returns true if and only if the value of *FixedNumber* is zero.

### Conversion

`fixednumber.toFormat( format ) ⇒ FixedNumber`

`fixednumber.toFormat( format ) ⇒ FixedNumber`

Returns a new FixedNumber with the value of *fixedvalue* with *format*.

`fixednumber.toHexString() ⇒ string`

`fixednumber.toHexString() ⇒ string`

Returns a HexString representation of *fixednumber*.

`fixednumber.toString() ⇒ string`

`fixednumber.toString() ⇒ string`

Returns a string representation of *fixednumber*.

`fixednumber.toUnsafeFloat() ⇒ float`

`fixednumber.toUnsafeFloat() ⇒ float`

Returns a floating-point JavaScript number value of *fixednumber*. Due to rounding in JavaScript numbers, the value is only approximate.

### Inspection

`FixedNumber.isFixedNumber( value ) ⇒ boolean`

`FixedNumber.isFixedNumber( value ) ⇒ boolean`

Returns true if and only if *value* is a **FixedNumber**.

## FixedFormat

A **FixedFormat** is a simple object which represents a decimal (base-10) Fixed-Point data representation. Usually using this class directly is unnecessary, as passing in a Format Strings directly into the FixedNumber will automatically create this.

#### Format Strings

A format string is composed of three components, including signed-ness, bit-width and number of decimals.

A signed format string begins with `fixed`

, which an unsigned format string begins with `ufixed`

, followed by the width (in bits) and the number of decimals.

The width must be congruent to 0 mod 8 (i.e. `(width % 8) == 0`

) and no larger than 256 bits and the number of decimals must be no larger than 80.

For example:

**fixed128x18**is signed, 128 bits wide and has 18 decimals; this is useful for most purposes**fixed32x0**is signed, 32 bits wide and has 0 decimals; this would be the same as a`int32_t`

in C**ufixed32x0**is unsigned, 32 bits wide and has 0 decimals; this would be the same as a`uint32_t`

in C**fixed**is shorthand for`fixed128x18`

**ufixed**is shorthand for`ufixed128x18`

### Creating Instances

Returns a new instance of a **FixedFormat** defined by *value*. Any valid Format Strings may be passed in as well as any object which has any of `signed`

, `width`

and `decimals`

defined, including a FixedFormat object.

### Properties

`fixedFormat.signed ⇒ boolean`

`fixedFormat.signed ⇒ boolean`

The signed-ness of *fixedFormat*, true if negative values are supported.

`fixedFormat.width ⇒ number`

`fixedFormat.width ⇒ number`

The width (in bits) of *fixedFormat*.

`fixedFormat.decimals ⇒ number`

`fixedFormat.decimals ⇒ number`

The number of decimal points of *fixedFormat*.

`fixedFormat.name ⇒ string`

`fixedFormat.name ⇒ string`

The name of the *fixedFormat*, which can be used to recreate the format and is the string that the Solidity language uses to represent this format.

**"fixed"**

A shorthand for `fixed128x80`

.

Last updated