# @arkts.math.Decimal (High-Precision Math Library Decimal)
The Decimal module provides a high-precision math library that offers the capability of high-precision floating-point arithmetic.
> **NOTE**
>
> The initial APIs of this module are supported since API version 12. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```ts
import { Decimal } from '@kit.ArkTS';
```
## Value
type Value = string | number | Decimal
Enumerates the value types available for constructing a decimal.
The actual value type can be the union of the types listed below.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Type | Description |
| ------------------- | ------------------------------ |
| string | The value can be any string.|
| number | The value can be any number.|
| [Decimal](#decimal) | The value is a decimal. |
## Rounding
type Rounding = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Enumerates the rounding modes available.
The actual rounding mode can be the union of the types listed below.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Type| Description |
| ---- | ------------------------------------------------------------ |
| 0 | Rounds in such a way that the result heads away from zero. It is the same as [Decimal.ROUND_UP](#constants). |
| 1 | Rounds in such a way that the result heads towards zero. It is the same as [Decimal.ROUND_DOWN](#constants). |
| 2 | Rounds towards positive infinity. It is the same as [Decimal.ROUND_CEILING](#constants). |
| 3 | Rounds towards negative infinity. It is the same as [Decimal.ROUND_FLOOR](#constants). |
| 4 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds away from zero. It is the same as [Decimal.ROUND_HALF_UP](#constants).|
| 5 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards zero. It is the same as [Decimal.ROUND_HALF_DOWN](#constants).|
| 6 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards the even neighbor. It is the same as [Decimal.ROUND_HALF_EVEN](#constants).|
| 7 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards positive infinity. It is the same as [Decimal.ROUND_HALF_CEILING](#constants).|
| 8 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards negative infinity. It is the same as [Decimal.ROUND_HALF_FLOOR](#constants).|
## Modulo
type Modulo = Rounding | 9
Enumerates the rounding modes available in the modulo operation.
The actual rounding mode can be the union of the types listed below.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Type | Description |
| ---------------------- | ------------------------------------------------------------ |
| [Rounding](#rounding) | Same rounding mode as that represented by [Rounding](#constants). |
| 9 | Positive remainder from Euclid's division. It is the same as [Decimal.EUCLID](#constants).|
## DecimalConfig
Describes the configuration of a **Decimal** object. You can call [Decimal.set](#set) to set these properties.
### Properties
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Name | Type | Read-Only| Mandatory| Description |
| --------- | ---------------------- | ---- | ---- | ------------------------------------------------------------ |
| precision | number | No | No | Maximum number of significant digits of the result of an operation. The value range is [1, 1e9], and the default value is **20**. |
| rounding | [Rounding](#rounding) | No | No | Rounding mode. The value is an integer ranging from 0 to 8, and the default value is **4**. |
| toExpNeg | number | No | No | Negative exponent value at and below which [toString](#tostring) returns exponential notation. The value range is [-9e15, 0], and the default value is **-7**.|
| toExpPos | number | No | No | Positive exponent value at and above which [toString](#tostring) returns exponential notation. The value range is [0, 9e15], and the default value is **21**.|
| minE | number | No | No | Minimum negative exponents. A decimal with an exponent less than this minimum value underflows towards zero. The value range is [-9e15, 0], and the default value is **-9e15**.|
| maxE | number | No | No | Maximum positive exponent. A decimal with an exponent greater than this maximum value overflows to infinity. The value range is [0, 9e15], and the default value is **9e15**.|
| crypto | boolean | No | No | Whether to use a pseudorandom number for encryption. The default value is **false**. The capability is not supported yet, and error code 10200061 is reported if it is used. |
| modulo | [Modulo](#modulo) | No | No | Rounding mode used in the modulo operation. The value is an integer ranging from 0 to 9, and the default value is **1**. |
| defaults | boolean | No | No | Whether the default value is used if no value is passed in for a property. The value **true** means that the default value is used, and **false** means the opposite. The default value is **true**.|
## Decimal
Decimal with any precision.
### Properties
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Name| Type | Read-Only| Mandatory| Description |
| ---- | -------- | ---- | ---- | ----------------------------------------- |
| d | number[] | Yes | Yes | Digits in the integer part and factional part of a decimal.|
| e | number | Yes | Yes | Exponent in a decimal.|
| s | number | Yes | Yes | Sign in a decimal. |
### Constants
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
| Name | Type | Value | Description |
| ------------------ | ------ | ---- | ------------------------------------------------------------ |
| ROUND_UP | number | 0 | Rounds in such a way that the result heads away from zero. In the modulo operation, if the dividend is negative, the remainder is positive; otherwise, the remainder is negative.|
| ROUND_DOWN | number | 1 | Rounds in such a way that the result heads towards zero. In the modulo operation, the remainder has the same sign as the dividend, and truncating division is used.|
| ROUND_CEILING | number | 2 | Rounds towards positive infinity. |
| ROUND_FLOOR | number | 3 | Rounds towards negative infinity. In the modulo operation, the remainder has the same sign as the dividend. |
| ROUND_HALF_UP | number | 4 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds away from zero. |
| ROUND_HALF_DOWN | number | 5 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards zero. |
| ROUND_HALF_EVEN | number | 6 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards the even neighbor. In the modulo operation, the modulo function in IEEE 754 is used.|
| ROUND_HALF_CEILING | number | 7 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards positive infinity. |
| ROUND_HALF_FLOOR | number | 8 | Rounds towards the nearest neighbor, and if both neighbors are equidistant, rounds towards negative infinity. |
| EUCLID | number | 9 | Always a positive remainder in the modulo operation. The Euclid's division formula is used: q = sign(x) * floor(a / abs(x)).|
### constructor
constructor(n: Value)
A constructor used to create a **Decimal** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ----------------------- |
| n | [Value](#value) | Yes | Initial value used to create the **Decimal** object.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(5);
console.info("test Decimal constructor:" + data.toString()); // 'test Decimal constructor:5'
```
### abs
abs(): Decimal
Returns a new **Decimal** object representing the absolute value of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the absolute value.|
**Example**
```ts
let data: Decimal = new Decimal(-0.5).abs();
console.info("test Decimal abs:" + data.toString()); // 'test Decimal abs:0.5'
```
### floor
floor(): Decimal
Returns a new **Decimal** object representing the nearest integer to which this decimal is rounded down.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the nearest integer rounded.|
**Example**
```ts
let data: Decimal = new Decimal(1.8).floor();
console.info("test Decimal floor:" + data.toString()); // 'test Decimal floor:1'
```
### ceil
ceil(): Decimal
Returns a new **Decimal** object representing the nearest integer to which this decimal is rounded up.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the nearest integer rounded.|
**Example**
```ts
let data: Decimal = new Decimal(1.8).ceil();
console.info("test Decimal ceil:" + data.toString()); // 'test Decimal ceil:2'
```
### trunc
trunc(): Decimal
Returns a new **Decimal** object representing the integer part truncated from this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the integer part.|
**Example**
```ts
let data: Decimal = new Decimal(2.5).trunc();
console.info("test Decimal trunc:" + data.toString()); // 'test Decimal trunc:2'
```
### clamp
clamp(min: Value, max: Value): Decimal
Returns a new **Decimal** object representing the value clamped to the inclusive range of **min** and **max**.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ------------------------ |
| min | [Value](#value) | Yes | Lower bound of the range. This value is inclusive.|
| max | [Value](#value) | Yes | Upper bound of the range. This value is inclusive.|
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing a value within the range.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200001 | The value of 'min' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(10.1).clamp(0, 10);
console.info("test Decimal clamp:" + data.toString()); // 'test Decimal clamp:10'
```
### add
add(n: Value): Decimal;
Returns a new **Decimal** object representing the sum of adding the specified number *n* to this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Addend.|
**Return value**
| Type | Description |
| ------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the sum.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0.5).add(0.5);
console.info("test Decimal add:" + data.toString()); // 'test Decimal add:1'
```
### sub
sub(n: Value): Decimal
Returns a new **Decimal** object representing the difference of subtracting the specified number *n* from this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Subtrahend.|
**Return value**
| Type | Description |
| ------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the difference.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(1).sub(0.5);
console.info("test Decimal sub:" + data.toString()); // 'test Decimal sub:0.5'
```
### mul
mul(n: Value): Decimal
Returns a new **Decimal** object representing the product of multiplying this decimal by the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Multiplicand.|
**Return value**
| Type | Description |
| ------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the product.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(1).mul(0.5);
console.info("test Decimal mul:" + data.toString()); // 'test Decimal mul:0.5'
```
### div
div(n: Value): Decimal
Returns a new **Decimal** object representing the quotient of dividing this decimal by the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Divisor.|
**Return value**
| Type | Description |
| ------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the quotient.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(1).div(0.5);
console.info("test Decimal div:" + data.toString()); // 'test Decimal div:2'
```
### mod
mod(n: Value): Decimal
Returns a new **Decimal** object representing the remainder of dividing this decimal by the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Divisor.|
**Return value**
| Type | Description |
| ------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the remainder.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(2).mod(1);
console.info("test Decimal mod:" + data.toString()); // 'test Decimal mod:0'
```
### sqrt
sqrt(): Decimal
Returns a new **Decimal** object representing the square root of this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the square root.|
**Example**
```ts
let data: Decimal = new Decimal(3).sqrt();
console.info("test Decimal sqrt:" + data.toString()); // 'test Decimal sqrt:1.7320508075688772935'
```
### cbrt
cbrt(): Decimal
Returns a new **Decimal** object representing the cube root of this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the cube root.|
**Example**
```ts
let data: Decimal = new Decimal(3).cbrt();
console.info("test Decimal cbrt:" + data.toString()); // 'test Decimal cbrt:1.4422495703074083823'
```
### pow
pow(n: Value): Decimal
Returns a new **Decimal** object representing the value resulting from raising this decimal to the power of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Power of the exponentiation operation.|
**Return value**
| Type | Description |
| ------- | ----------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the result of the exponentiation operation.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(3).pow(-2);
console.info("test Decimal pow:" + data.toString()); // 'test Decimal pow:0.11111111111111111111'
```
### exp
exp(): Decimal
Returns a new **Decimal** object representing the value resulting from raising e to the power of this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the result of the natural exponentiation operation.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(2).exp();
console.info("test Decimal exp:" + data.toString()); // 'test Decimal exp:7.3890560989306502272'
```
### log
log(n: Value): Decimal
Returns a new **Decimal** object representing the logarithm of this decimal to the specified base *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ------------------ |
| n | [Value](#value) | Yes | Base of the logarithm.|
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the logarithm.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(2).log(256);
console.info("test Decimal log:" + data.toString()); // 'test Decimal log:0.125'
```
### ln
ln(): Decimal
Returns a new **Decimal** object representing the natural logarithm of this decimal.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the natural logarithm.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(1.23e+30).ln();
console.info("test Decimal ln:" + data.toString()); // 'test Decimal ln:69.284566959205696648'
```
### cos
cos(): Decimal
Returns a new **Decimal** object representing the cosine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the cosine.|
**Example**
```ts
let data: Decimal = new Decimal(-0.25).cos();
console.info("test Decimal cos:" + data.toString()); // 'test Decimal cos:0.96891242171064478414'
```
### sin
sin(): Decimal
Returns a new **Decimal** object representing the sine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the sine.|
**Example**
```ts
let data: Decimal = new Decimal(0.75).sin();
console.info("test Decimal sin:" + data.toString()); // 'test Decimal sin:0.68163876002333416673'
```
### tan
tan(): Decimal
Returns a new **Decimal** object representing the tangent of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the tangent.|
**Example**
```ts
let data: Decimal = new Decimal(0.75).tan();
console.info("test Decimal tan:" + data.toString()); // 'test Decimal tan:0.93159645994407246117'
```
### cosh
cosh(): Decimal
Returns a new **Decimal** object representing the hyperbolic cosine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic cosine.|
**Example**
```ts
let data: Decimal = new Decimal(0.5).cosh();
console.info("test Decimal cosh:" + data.toString()); // 'test Decimal cosh:1.1276259652063807852'
```
### sinh
sinh(): Decimal
Returns a new **Decimal** object representing the hyperbolic sine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic sine.|
**Example**
```ts
let data: Decimal = new Decimal(0.5).sinh();
console.info("test Decimal sinh:" + data.toString()); // 'test Decimal sinh:0.52109530549374736162'
```
### tanh
tanh(): Decimal
Returns a new **Decimal** object representing the hyperbolic tangent of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic tangent.|
**Example**
```ts
let data: Decimal = new Decimal(0.5).tanh();
console.info("test Decimal tanh:" + data.toString()); // 'test Decimal tanh:0.4621171572600097585'
```
### acos
acos(): Decimal
Returns a new **Decimal** object representing the arc cosine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc cosine.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(0.5).acos();
console.info("test Decimal acos:" + data.toString()); // 'test Decimal acos:1.0471975511965977462'
```
### asin
asin(): Decimal
Returns a new **Decimal** object representing the arc sine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc sine.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(0.75).asin();
console.info("test Decimal asin:" + data.toString()); // 'test Decimal asin:0.84806207898148100805'
```
### atan
atan(): Decimal
Returns a new **Decimal** object representing the arc tangent of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc tangent.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(0.75).atan();
console.info("test Decimal atan:" + data.toString()); // 'test Decimal atan:0.6435011087932843868'
```
### acosh
acosh(): Decimal
Returns a new **Decimal** object representing the inverse hyperbolic cosine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic cosine.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(50).acosh();
console.info("test Decimal acosh:" + data.toString()); // 'test Decimal acosh:4.6050701709847571595'
```
### asinh
asinh(): Decimal
Returns a new **Decimal** object representing the inverse hyperbolic sine of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic sine.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(50).asinh();
console.info("test Decimal asinh:" + data.toString()); // 'test Decimal asinh:4.6052701709914238266'
```
### atanh
atanh(): Decimal
Returns a new **Decimal** object representing the inverse hyperbolic tangent of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic tangent.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------- |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = new Decimal(0.75).atanh();
console.info("test Decimal atanh:" + data.toString()); // 'test Decimal atanh:0.97295507452765665255'
```
### comparedTo
comparedTo(n: Value): number
Compares this decimal with the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------ | ------------------------------------------------------------ |
| number | Comparison result, which can be any of the following:
**1**: The decimal is greater than *n*.
**-1**: The decimal is less than *n*.
**0**: The decimal is equal to *n*.
**NaN**: Either the decimal or *n* is Not a Number (NaN).|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(Infinity);
let data1: Decimal = new Decimal(5);
let data2: number = data.comparedTo(data1);
console.info("test Decimal comparedTo:" + data2); // 'test Decimal comparedTo:1'
let data3: number = data1.comparedTo(10.5);
console.info("test Decimal comparedTo:" + data3); // 'test Decimal comparedTo:-1'
```
### equals
equals(n: Value): boolean
Checks whether this decimal is equal to the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------- | ------------------------------------------------ |
| boolean | **true**: They are equal.
**false**: They are not equal.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0);
let data1: boolean = data.equals('1e-324');
console.info("test Decimal equals:" + data1); // 'test Decimal equals:false'
```
### greaterThan
greaterThan(n: Value): boolean
Checks whether this decimal is greater than the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------- | ---------------------------------------------- |
| boolean | **true**: The decimal is greater than *n*.
**false**: The decimal is not greater than *n*.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0.1);
let data1: boolean = data.greaterThan(new Decimal(0.3).sub(0.2));
console.info("test Decimal greaterThan:" + data1); // 'test Decimal greaterThan:false'
```
### greaterThanOrEqualTo
greaterThanOrEqualTo(n: Value): boolean
Checks whether this decimal is greater than or equal to the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------- | -------------------------------------------------- |
| boolean | **true**: The decimal is greater than or equal to *n*.
**false**: The decimal is not greater than or equal to *n*.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0.3).sub(0.2);
let data1: boolean = data.greaterThanOrEqualTo(0.1);
console.info("test Decimal greaterThanOrEqualTo:" + data1); // 'test Decimal greaterThanOrEqualTo:true'
```
### lessThan
lessThan(n: Value): boolean
Checks whether this decimal is less than the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------- | ---------------------------------------------- |
| boolean | **true**: The decimal is less than *n*.
**false**: The decimal is not less than *n*.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0.3).sub(0.2);
let data1: boolean = data.lessThan(0.1)
console.info("test Decimal lessThan:" + data1); // 'test Decimal lessThan:false'
```
### lessThanOrEqualTo
lessThanOrEqualTo(n: Value): boolean
Checks whether this decimal is less than or equal to the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | --------------------- |
| n | [Value](#value) | Yes | Target number to compare.|
**Return value**
| Type | Description |
| ------- | -------------------------------------------------- |
| boolean | **true**: The decimal is less than or equal to *n*.
**false**: The decimal is not less than or equal to *n*.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(0.1);
let data1: boolean = data.lessThanOrEqualTo(new Decimal(0.3).sub(0.2))
console.info("test Decimal lessThanOrEqualTo:" + data1); // 'test Decimal lessThanOrEqualTo:true'
```
### isFinite
isFinite(): boolean
Checks whether this decimal is finite.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | -------------------------------------------- |
| boolean | **true**: The decimal is finite.
**false**: The decimal is not finite.|
**Example**
```ts
let data: Decimal = new Decimal(1);
let data1: boolean = data.isFinite();
console.info("test Decimal isFinite:" + data1); // 'test Decimal isFinite:true'
```
### isInteger
isInteger(): boolean
Checks whether this decimal is an integer.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ------------------------------------------ |
| boolean | **true**: The decimal is an integer.
**false**: The decimal is not an integer.|
**Example**
```ts
let data: Decimal = new Decimal(123.456);
let data1: boolean = data.isInteger();
console.info("test Decimal isInteger:" + data1); // 'test Decimal isInteger:false'
```
### isNaN
isNaN(): boolean
Checks whether this decimal is NaN.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ----------------------------------------- |
| boolean | **true**: The decimal is NaN.
**false**: The decimal is not NaN.|
**Example**
```ts
let data: Decimal = new Decimal(NaN);
let data1: boolean = data.isNaN();
console.info("test Decimal isNaN:" + data1); // 'test Decimal isNaN:true'
```
### isNegative
isNegative(): boolean
Checks whether this decimal is negative.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ------------------------------------------ |
| boolean | **true**: The decimal is negative.
**false**: The decimal is not negative.|
**Example**
```ts
let data: Decimal = new Decimal(-5);
let data1: boolean = data.isNegative();
console.info("test Decimal isNegative:" + data1); // 'test Decimal isNegative:true'
let data2: Decimal = new Decimal(-0);
let data3: boolean = data.isNegative();
console.info("test Decimal isNegative:" + data3); // 'test Decimal isNegative:true'
```
### isPositive
isPositive(): boolean
Checks whether this decimal is positive.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | ------------------------------------------ |
| boolean | **true**: The decimal is positive.
**false**: The decimal is not positive.|
**Example**
```ts
let data: Decimal = new Decimal(5);
let data1: boolean = data.isPositive();
console.info("test Decimal isPositive:" + data1); // 'test Decimal isPositive:true'
let data2: Decimal = new Decimal(0);
let data3: boolean = data.isPositive();
console.info("test Decimal isPositive:" + data3); // 'test Decimal isPositive:true'
```
### isZero
isZero(): boolean
Returns whether this decimal is zero or minus zero.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------------------- |
| boolean | **true**: The decimal is zero or minus zero.
**false**: The decimal is not zero.|
**Example**
```ts
let data: Decimal = new Decimal(0);
let data1: boolean = data.isZero();
console.info("test Decimal isZero:" + data1.toString()); // 'test Decimal isZero:true'
```
### dividedToIntegerBy
dividedToIntegerBy(n: Value): Decimal
Returns a new **Decimal** object representing the integer part of this decimal divided by the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Divisor.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the integer part.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = new Decimal(5);
let data1: Decimal = new Decimal(3);
let data2: Decimal = data.dividedToIntegerBy(data1);
console.info("test Decimal dividedToIntegerBy:" + data2.toString()); // 'test Decimal dividedToIntegerBy:1'
```
### negate
negate(): Decimal
Returns a new **Decimal** object representing the result of multiplying this decimal by negative one.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the negated value of the decimal.|
**Example**
```ts
let data: Decimal = new Decimal(1.8);
let data1: Decimal = data.negate();
console.info("test Decimal negate:" + data1.toString()); // 'test Decimal negate:-1.8'
```
### toBinary
toBinary(): string
Converts this decimal into a binary string.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Binary string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toBinary();
console.info("test Decimal toBinary:" + data1); // 'test Decimal toBinary:0b100000000'
```
### toBinary
toBinary(significantDigits: number): string
Converts this decimal into a binary string, with the number of significant digits specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ------------------------------------------------ |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9].|
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Binary string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toBinary(1);
console.info("test Decimal toBinary:" + data1); // 'test Decimal toBinary:0b1p+8'
```
### toBinary
toBinary(significantDigits: number, rounding: Rounding): string
Converts this decimal into a binary string, with the number of significant digits and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | --------------------- | ---- | --------------------------------------------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Binary string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 10200001 | The value of 'significantDigits \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toBinary(1, Decimal.ROUND_HALF_UP);
console.info("test Decimal toBinary:" + data1); // 'test Decimal toBinary:0b1p+8'
```
### toOctal
toOctal(): string
Converts this decimal into an octal string.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Octal string.|
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toOctal();
console.info("test Decimal toOctal:" + data1); // 'test Decimal toOctal:0o400'
```
### toOctal
toOctal(significantDigits: number): string
Converts this decimal into an octal string, with the number of significant digits specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ------------------------------------------------ |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9].|
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Octal string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toOctal(1);
console.info("test Decimal toOctal:" + data1); // 'test Decimal toOctal:0o1p+8'
```
### toOctal
toOctal(significantDigits: number, rounding: Rounding): string
Converts this decimal into an octal string, with the number of significant digits and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | --------------------- | ---- | --------------------------------------------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------ | ------------------------ |
| string | Octal string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 10200001 | The value of 'significantDigits \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toOctal(1, Decimal.ROUND_HALF_UP);
console.info("test Decimal toOctal:" + data1); // 'test Decimal toOctal:0o1p+8'
```
### toHexadecimal
toHexadecimal(): string
Converts this decimal into a hexadecimal string.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | -------------------------- |
| string | Hexadecimal string.|
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toHexadecimal();
console.info("test Decimal toHexadecimal:" + data1); // 'test Decimal toHexadecimal:0x100'
```
### toHexadecimal
toHexadecimal(significantDigits: number): string
Converts this decimal into a hexadecimal string, with the number of significant digits specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ------------------------------------------------ |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9].|
**Return value**
| Type | Description |
| ------ | -------------------------- |
| string | Hexadecimal string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toHexadecimal(1);
console.info("test Decimal toHexadecimal:" + data1); // 'test Decimal toHexadecimal:0x1p+8'
```
### toHexadecimal
toHexadecimal(significantDigits: number, rounding: Rounding): string
Converts this decimal into a hexadecimal string, with the number of significant digits and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | --------------------- | ---- | --------------------------------------------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------ | -------------------------- |
| string | Hexadecimal string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 10200001 | The value of 'significantDigits \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(256);
let data1: string = data.toHexadecimal(1, Decimal.ROUND_HALF_UP);
console.info("test Decimal toHexadecimal:" + data1); // 'test Decimal toHexadecimal:0x1p+8'
```
### toDecimalPlaces
toDecimalPlaces(): Decimal
Truncates this decimal, without rounding.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object presenting the value with the given number of decimal places.|
**Example**
```ts
let data: Decimal = new Decimal(12.34567);
let data1: Decimal = data.toDecimalPlaces();
console.info("test Decimal toDecimalPlaces:" + data1.toString()); // 'test Decimal toDecimalPlaces:12.34567'
```
### toDecimalPlaces
toDecimalPlaces(decimalPlaces: number): Decimal
Truncates this decimal to a given number of decimal places.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | ------ | ---- | -------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9].|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object presenting the value with the given number of decimal places.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------- |
| 10200001 | The value of 'decimalPlaces' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(9876.54321);
let data1: Decimal = data.toDecimalPlaces(3);
console.info("test Decimal toDecimalPlaces:" + data1.toString()); // 'test Decimal toDecimalPlaces:9876.543'
```
### toDecimalPlaces
toDecimalPlaces(decimalPlaces: number, rounding: Rounding): Decimal
Truncates this decimal to a given number of decimal places, with the rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | --------------------- | ---- | --------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object presenting the value with the given number of decimal places.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------------------- |
| 10200001 | The value of 'decimalPlaces \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(9876.54321);
let data1: Decimal = data.toDecimalPlaces(1, 0);
console.info("test Decimal toDecimalPlaces:" + data1.toString()); // 'test Decimal toDecimalPlaces:9876.6'
data1 = data.toDecimalPlaces(1, Decimal.ROUND_DOWN) // data1: '9876.5'
```
### toExponential
toExponential(): string
Converts this decimal to a string expressed in exponential notation, without rounding.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | -------------------------------- |
| string | String expressed in exponential notation.|
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1: string = data.toExponential();
console.info("test Decimal toExponential:" + data1); // 'test Decimal toExponential:4.56e+1'
```
### toExponential
toExponential(decimalPlaces: number): string
Converts this decimal to a string expressed in exponential notation, with the number of decimal places specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | ------ | ---- | -------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9].|
**Return value**
| Type | Description |
| ------ | -------------------------------- |
| string | String expressed in exponential notation.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------- |
| 10200001 | The value of 'decimalPlaces' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1: string = data.toExponential(0);
console.info("test Decimal toExponential:" + data1); // 'test Decimal toExponential:5e+1'
data1 = data.toExponential(1) // data1: '4.6e+1'
data1 = data.toExponential(3) // data1: '4.560e+1'
```
### toExponential
toExponential(decimalPlaces: number, rounding: Rounding): string
Converts this decimal to a string expressed in exponential notation, with the number of decimal places and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | --------------------- | ---- | --------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------ | -------------------------------- |
| string | String expressed in exponential notation.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------------------- |
| 10200001 | The value of 'decimalPlaces \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1 = data.toExponential(1, Decimal.ROUND_DOWN)
console.info("test Decimal toExponential:" + data1); // 'test Decimal toExponential:4.5e+1'
```
### toFixed
toFixed(): string
Converts this decimal to a string expressed in decimal fixed-point mode, without rounding.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------ |
| [Decimal](#decimal) | String expressed in decimal fixed-point mode.|
**Example**
```ts
let data: Decimal = new Decimal(3.456);
let data1: string = data.toFixed();
console.info("test Decimal toFixed:" + data1); // 'test Decimal toFixed:3.456'
```
### toFixed
toFixed(decimalPlaces: number): string
Converts this decimal to a string expressed in decimal fixed-point mode, with the number of decimal places specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | ------ | ---- | -------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9].|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------ |
| [Decimal](#decimal) | String expressed in decimal fixed-point mode.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------- |
| 10200001 | The value of 'decimalPlaces' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(3.456);
let data1: string = data.toFixed(0)
console.info("test Decimal toFixed:" + data1); // 'test Decimal toFixed:3'
data1 = data.toFixed(2) // data1: '3.46'
data1 = data.toFixed(5) // data1: '3.45600'
```
### toFixed
toFixed(decimalPlaces: number, rounding: Rounding): string
Converts this decimal to a string expressed in decimal fixed-point mode, with the number of decimal places and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------- | --------------------- | ---- | --------------------------------------------------------- |
| decimalPlaces | number | Yes | Number of decimal places to reserve. The value is an integer in the range of [0, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------ |
| [Decimal](#decimal) | String expressed in decimal fixed-point mode.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | --------------------------------------------------------- |
| 10200001 | The value of 'decimalPlaces \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(3.456);
let data1: string = data.toFixed(2, Decimal.ROUND_DOWN);
console.info("test Decimal toFixed:" + data1); // b: 'test Decimal toFixed:3.45'
```
### toFraction
toFraction(): Decimal[]
Converts this decimal into a fraction.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| --------------------- | ------------------------------------------------------------ |
| [Decimal](#decimal)[] | Decimal array with a fixed length of 2. The two integers in the array represent the numerator and the denominator, respectively.|
**Example**
```ts
let data: Decimal = new Decimal(1.75);
let data1: Decimal[] = data.toFraction();
console.info("test Decimal toFraction:" + data1.toString()); // 'test Decimal toFraction:7,4'
```
### toFraction
toFraction(max_denominator: Value): Decimal[]
Converts this decimal to a fraction, with the maximum denominator specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| --------------- | --------------- | ---- | ------------------------ |
| max_denominator | [Value](#value) | Yes | Maximum denominator. This value is inclusive.|
**Return value**
| Type | Description |
| --------------------- | ------------------------------------------------------------ |
| [Decimal](#decimal)[] | Decimal array with a fixed length of 2. The two integers in the array represent the numerator and the denominator, respectively.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let pi: Decimal = new Decimal('3.14159265358')
let data1 = pi.toFraction() // data1: '157079632679,50000000000'
data1 = pi.toFraction(100000) // data1: '312689, 99532'
data1 = pi.toFraction(10000) // data1: '355, 113'
data1 = pi.toFraction(100) // data1: '311, 99'
data1 = pi.toFraction(10) // data1: '22, 7'
data1 = pi.toFraction(1) // data1: '3, 1'
```
### toNearest
toNearest(n: Value): Decimal
Multiplies the specified number *n* to a value closet to this decimal and returns this closest value in the form of a **Decimal object**.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Number to be multiplied.|
**Return value**
| Type | Description |
| ------- | ------------------------------------------- |
| Decimal | **Decimal** object representing the closest value.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ---------------------------------------- |
| 10200001 | The value of 'rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(1.39);
let data1: Decimal = data.toNearest(0.25);
console.info("test Decimal toNearest:" + data1.toString()); // 'test Decimal toNearest:1.5'
```
### toNearest
toNearest(n: Value, rounding: Rounding): Decimal
Multiplies the specified number *n* to a value closet to this decimal and returns this closest value after rounding in the form of a **Decimal** object.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------------- | ---- | --------------------------------------------------------- |
| n | [Value](#value) | Yes | Number to be multiplied. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the closest value.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ---------------------------------------- |
| 10200001 | The value of 'rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(9.499)
let data1 = data.toNearest(0.5, Decimal.ROUND_UP) // data1: '9.5'
data1 = data.toNearest(0.5, Decimal.ROUND_DOWN) // data1: '9'
```
### toPrecision
toPrecision(): string
Converts this decimal into a string.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | --------------------------------- |
| string | **Decimal** object representing the string.|
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1: string = data.toPrecision();
console.info("test Decimal toPrecision:" + data1); // 'test Decimal toPrecision:45.6'
```
### toPrecision
toPrecision(significantDigits: number): string
Converts this decimal into a string, with the number of significant digits specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ---------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve.|
**Return value**
| Type | Description |
| ------ | --------------------------------- |
| string | **Decimal** object representing the string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1: string = data.toPrecision(1);
console.info("test Decimal toPrecision:" + data1); // 'test Decimal toPrecision:5e+1'
data1 = data.toPrecision(5); // data1: '45.600'
```
### toPrecision
toPrecision(significantDigits: number, rounding: Rounding): string
Converts this decimal into a string, with the number of significant digits and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | --------------------- | ---- | --------------------------------------------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------ | --------------------------------- |
| string | **Decimal** object representing the string.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 10200001 | The value of 'significantDigits \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(45.6);
let data1: string = data.toPrecision(2, Decimal.ROUND_UP) // data1: '46'
data1 = data.toPrecision(2, Decimal.ROUND_DOWN) // data1: '45'
```
### toSignificantDigits
toSignificantDigits(): Decimal
Converts this decimal into another one with the number of significant digits specified.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------- | --------------------------------------- |
| [Decimal](#decimal) | **Decimal** object with the specified number of significant digits.|
**Example**
```ts
let data: Decimal = new Decimal(987.654321);
let data1: Decimal = data.toSignificantDigits();
console.info("test Decimal toSignificantDigits:" + data1.toString()); // 'test Decimal toSignificantDigits:987.654321'
```
### toSignificantDigits
toSignificantDigits(significantDigits: number): Decimal
Converts this decimal into another one with the number of significant digits specified.
You can use [DecimalConfig.rounding](#decimalconfig) to set the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ---------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object with the specified number of significant digits.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------- |
| 10200001 | The value of 'significantDigits' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(987.654321);
let data1: Decimal = data.toSignificantDigits(6);
console.info("test Decimal toSignificantDigits:" + data1.toString()); // 'test Decimal toSignificantDigits:987.654'
```
### toSignificantDigits
toSignificantDigits(significantDigits: number, rounding: Rounding): Decimal
Converts this decimal into another one with the number of significant digits and rounding mode specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | --------------------- | ---- | --------------------------------------------------------- |
| significantDigits | number | Yes | Number of significant digits to reserve. The value is an integer in the range of [1, 1e9]. |
| rounding | [Rounding](#rounding) | Yes | Rounding mode. For details, see [Rounding](#rounding).|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object with the specified number of significant digits.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 10200001 | The value of 'significantDigits \| rounding' is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(987.654321);
let data1: Decimal = data.toSignificantDigits(6, Decimal.ROUND_UP);
console.info("test Decimal toSignificantDigits:" + data1.toString()); // 'test Decimal toSignificantDigits:987.655'
```
### toNumber
toNumber(): number
Converts this decimal into a number.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ------------------------------- |
| number | Number representing the decimal.|
**Example**
```ts
let data: Decimal = new Decimal(456.789);
let data1: number = data.toNumber();
console.info("test Decimal toNumber:" + data1.toString()); // 'test Decimal toNumber:456.789'
```
### toString
toString(): string
Converts this decimal into a string. If the positive exponent of the decimal is greater than or equal to [toExpPos](#decimalconfig), or if the negative exponent is less than or equal to [toExpNeg](#decimalconfig), exponential notation is returned.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ----------------------------- |
| string | String representing the decimal.|
**Example**
```ts
let data: Decimal = new Decimal(750000);
let data1: string = data.toString();
console.info("test Decimal toString:" + data1); // 'test Decimal toString:750000'
Decimal.set({ toExpPos: 5 })
data1 = data.toString() // data1:'7.5e+5'
let data2: Decimal = new Decimal(0.000000123)
console.info("test Decimal toString:" + data2.toString()); // 'test Decimal toString:1.23e-7'
Decimal.set({ toExpNeg: -7 })
data1 = data2.toString() // data1:'1.23e-7'
```
### valueOf
valueOf(): string
Returns a string representing the value of this decimal. Negative zeros contain minus signs.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | ----------------------------- |
| string | String representing the decimal.|
**Example**
```ts
let data: Decimal = new Decimal(-0);
let data1: string = data.valueOf();
console.info("test Decimal valueOf:" + data1); // 'test Decimal valueOf:-0'
```
### decimalPlaces
decimalPlaces(): number
Returns the number of decimal places of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | --------------------------- |
| number | Number of decimal places.|
**Example**
```ts
let data: Decimal = new Decimal(1.234);
let data1: number = data.decimalPlaces();
console.info("test Decimal decimalPlaces:" + data1); // 'test Decimal decimalPlaces:3'
```
### precision
precision(): number
Returns the number of significant digits of this decimal.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------ | --------------------------- |
| number | Number of significant digits.|
**Example**
```ts
let data: Decimal = new Decimal(1.234);
let data1: number = data.precision();
console.info("test Decimal precision:" + data1); // 'test Decimal precision:4'
```
### precision
precision(includeZeros: boolean | number): number
Returns the number of significant digits of this decimal, with **includeZeros** specified to determine whether to count the number of trailing zeros in the integer part.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ------------ | ------- | ---- | ------------------------------------------------------------ |
| includeZeros | boolean | Yes | Whether to count the number of trailing zeros in the integer part. The value **true** means to count the number of trailing zeros in the integer part, and **false** means the opposite.|
**Return value**
| Type | Description |
| ------ | --------------------------- |
| number | Number of significant digits.|
**Error codes**
For details about the error codes, see [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------ |
| 10200001 | The value of includeZeros is out of range. |
**Example**
```ts
let data: Decimal = new Decimal(987000);
let data1: number = data.precision();
console.info("test Decimal precision:" + data1); // 'test Decimal precision:3'
data1 = data.precision(true) // data1:'6'
```
### abs
static abs(n: Value): Decimal
Returns a **Decimal** object representing the absolute value of the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the absolute value.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.abs(-0.5);
console.info("test Decimal abs:" + data.toString()); // 'test Decimal abs:0.5'
```
### floor
static floor(n: Value): Decimal
Returns a **Decimal** object representing the nearest integer to which the specified number *n* is rounded down.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the nearest integer rounded.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.floor(1.8);
console.info("test Decimal floor:" + data.toString()); // 'test Decimal floor:1'
```
### ceil
static ceil(n: Value): Decimal
Returns a **Decimal** object representing the nearest integer to which the specified number *n* is rounded up.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the nearest integer rounded.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.ceil(1.8);
console.info("test Decimal ceil:" + data.toString()); // 'test Decimal ceil:2'
```
### trunc
static trunc(n: Value): Decimal
Returns a **Decimal** object representing the integer part truncated from the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the integer part.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.trunc(2.5);
console.info("test Decimal trunc:" + data.toString()); // 'test Decimal trunc:2'
```
### clamp
static clamp(n: Value, min: Value, max: Value): Decimal
Returns a **Decimal** object representing the value clamped to the inclusive range of **min** and **max** of the specified number *n*.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ------------------------ |
| n | [Value](#value) | Yes | Value to be clamped. |
| min | [Value](#value) | Yes | Lower bound of the range. This value is inclusive.|
| max | [Value](#value) | Yes | Upper bound of the range. This value is inclusive.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing a value within the range.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200001 | The value of 'min' is out of range. |
**Example**
```ts
let data: Decimal = Decimal.clamp(10.1, 0, 10);
console.info("test Decimal clamp:" + data.toString()); // 'test Decimal clamp:10'
```
### add
static add(x: Value, y: Value): Decimal
Returns a **Decimal** object representing the sum of two numbers *x* and *y*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ------------------ |
| x | [Value](#value) | Yes | Augend. |
| y | [Value](#value) | Yes | Addend.|
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the sum.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.add(0.5, 0.5);
console.info("test Decimal add:" + data.toString()); // 'test Decimal add:1'
```
### sum
static sum(...n: Value[]): Decimal
Returns a **Decimal** object representing the sum of elements in an array.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------------- | ---- | ------------ |
| n | [Value](#value)[] | Yes | Target array to operate.|
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the sum.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.sum(0.5, 0.5);
console.info("test Decimal sum:" + data.toString()); // 'test Decimal sum:1'
```
### sub
static sub(x: Value, y: Value): Decimal
Returns a **Decimal** object representing the difference between two numbers *x* and *y*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| x | [Value](#value) | Yes | Minuend.|
| y | [Value](#value) | Yes | Subtrahend. |
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the difference.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.sub(1, 0.5);
console.info("test Decimal sub:" + data.toString()); // 'test Decimal sub:0.5'
```
### mul
static mul(x: Value, y: Value): Decimal
Returns a **Decimal** object representing the product of two numbers *x* and *y*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| x | [Value](#value) | Yes | Multiplier.|
| y | [Value](#value) | Yes | Multiplicand. |
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the product.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.mul(1, 0.5);
console.info("test Decimal mul:" + data.toString()); // 'test Decimal mul:0.5'
```
### div
static div(x: Value, y: Value): Decimal
Returns a **Decimal** object representing the quotient of two numbers *x* and *y*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| x | [Value](#value) | Yes | Dividend.|
| y | [Value](#value) | Yes | Divisor. |
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the quotient.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.div(1, 0.5);
console.info("test Decimal div:" + data.toString()); // 'test Decimal div:2'
```
### mod
static mod(x: Value, y: Value): Decimal
Returns a **Decimal** object representing the remainder of two numbers *x* and *y*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ------------------ |
| x | [Value](#value) | Yes | Dividend.|
| y | [Value](#value) | Yes | Divisor. |
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the remainder.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.mod(2, 1);
console.info("test Decimal mod:" + data.toString()); // 'test Decimal mod:0'
```
### sqrt
static sqrt(n: Value): Decimal
Returns a **Decimal** object representing the square root of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the square root.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.sqrt(3);
console.info("test Decimal sqrt:" + data.toString()); // 'test Decimal sqrt:1.7320508075688772935'
```
### cbrt
static cbrt(n: Value): Decimal
Returns a **Decimal** object representing the cube root of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the cube root.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.cbrt(3);
console.info("test Decimal cbrt:" + data.toString()); // 'test Decimal cbrt:1.4422495703074083823'
```
### pow
static pow(base: Value, exponent: Value): Decimal
Returns a **Decimal** object representing the value resulting from raising a number to the power of another number. You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | --------------- | ---- | ------------------ |
| base | [Value](#value) | Yes | Base of the exponentiation operation.|
| exponent | [Value](#value) | Yes | Power of the exponentiation operation. |
**Return value**
| Type | Description |
| ------------------- | ------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the result of the exponentiation operation.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.pow(3, -2);
console.info("test Decimal pow:" + data.toString()); // 'test Decimal pow:0.11111111111111111111'
```
### exp
static exp(n: Value): Decimal
Returns a **Decimal** object representing the value resulting from raising e to the power of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------- |
| n | [Value](#value) | Yes | Power of the natural exponentiation operation.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the result of the natural exponentiation operation.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.exp(2);
console.info("test Decimal exp:" + data.toString()); // 'test Decimal exp:7.3890560989306502272'
```
### log
static log(n: Value, base: Value): Decimal
Returns a **Decimal** object representing the logarithm of the specified number *n* to the specified base.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Real number of the logarithmic operation.|
| base | [Value](#value) | Yes | Base of the logarithmic operation. |
**Return value**
| Type | Description |
| ------------------- | --------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the logarithm.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.log(2, 256);
console.info("test Decimal log:" + data.toString()); // 'test Decimal log:0.125'
```
### ln
static ln(n: Value): Decimal
Returns a **Decimal** object representing the natural logarithm of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Real number of the logarithmic operation.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the natural logarithm.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.ln(1.23e+30);
console.info("test Decimal ln:" + data.toString()); // 'test Decimal ln:69.284566959205696648'
```
### log2
static log2(n: Value): Decimal
Returns a **Decimal** object representing the base 2 logarithm of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Real number of the logarithmic operation.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the base 2 logarithm of the specified number.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.log2(4);
console.info("test Decimal log2:" + data.toString()); // 'test Decimal log2:2'
```
### log10
static log10(n: Value): Decimal
Returns a **Decimal** object representing the base 10 logarithm of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Real number of the logarithmic operation.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the base 10 logarithm of the specified number.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.log10(10000);
console.info("test Decimal log10:" + data.toString()); // 'test Decimal log10:4'
```
### cos
static cos(n: Value): Decimal
Returns a **Decimal** object representing the cosine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the cosine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.cos(-0.25);
console.info("test Decimal cos:" + data.toString()); // 'test Decimal cos:0.96891242171064478414'
```
### sin
static sin(n: Value): Decimal
Returns a **Decimal** object representing the sine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the sine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.sin(0.75);
console.info("test Decimal sin:" + data.toString()); // 'test Decimal sin:0.68163876002333416673'
```
### tan
static tan(n: Value): Decimal
Returns a **Decimal** object representing the tangent of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the tangent.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.tan(0.75);
console.info("test Decimal tan:" + data.toString()); // 'test Decimal tan:0.93159645994407246117'
```
### cosh
static cosh(n: Value): Decimal
Returns a **Decimal** object representing the hyperbolic cosine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic cosine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.cosh(0.5);
console.info("test Decimal cosh:" + data.toString()); // 'test Decimal cosh:1.1276259652063807852'
```
### sinh
static sinh(n: Value): Decimal
Returns a **Decimal** object representing the hyperbolic sine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic sine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.sinh(0.5);
console.info("test Decimal sinh:" + data.toString()); // 'test Decimal sinh:0.52109530549374736162'
```
### tanh
static tanh(n: Value): Decimal
Returns a **Decimal** object representing the hyperbolic tangent of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | ---------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------ |
| [Decimal](#decimal) | **Decimal** object representing the hyperbolic tangent.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.tanh(0.5);
console.info("test Decimal tanh:" + data.toString()); // 'test Decimal tanh:0.4621171572600097585'
```
### acos
static acos(n: Value): Decimal
Returns a **Decimal** object representing the arc cosine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc cosine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.acos(0.5);
console.info("test Decimal acos:" + data.toString()); // 'test Decimal acos:1.0471975511965977462'
```
### asin
static asin(n: Value): Decimal
Returns a **Decimal** object representing the arc sine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc sine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.asin(0.75);
console.info("test Decimal asin:" + data.toString()); // 'test Decimal asin:0.84806207898148100805'
```
### atan
static atan(n: Value): Decimal
Returns a **Decimal** object representing the arc tangent of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | -------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc tangent.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.atan(0.75);
console.info("test Decimal atan:" + data.toString()); // 'test Decimal atan:0.6435011087932843868'
```
### acosh
static acosh(n: Value): Decimal
Returns a **Decimal** object representing the inverse hyperbolic cosine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ---------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic cosine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.acosh(50);
console.info("test Decimal acosh:" + data.toString()); // 'test Decimal acosh:4.6050701709847571595'
```
### asinh
static asinh(n: Value): Decimal
Returns a **Decimal** object representing the inverse hyperbolic sine of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ---------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic sine.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.asinh(50);
console.info("test Decimal asinh:" + data.toString()); // 'test Decimal asinh:4.6052701709914238266'
```
### atanh
static atanh(n: Value): Decimal
Returns a **Decimal** object representing the inverse hyperbolic tangent of the specified number *n*.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ---------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the inverse hyperbolic tangent.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.atanh(0.75);
console.info("test Decimal atanh:" + data.toString()); // 'test Decimal atanh:0.97295507452765665255'
```
### atan2
static atan2(y: Value, x: Value): Decimal
Returns a **Decimal** object representing the arc tangent of y/x in the range from -π to π.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| y | [Value](#value) | Yes | Dividend.|
| x | [Value](#value) | Yes | Divisor. |
**Return value**
| Type | Description |
| ------------------- | ---------------------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the arc tangent of y/x in the range from -π to π.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200060 | Precision limit exceeded. |
**Example**
```ts
let data: Decimal = Decimal.atan2(2, 3);
console.info("test Decimal atan2:" + data.toString()); // 'test Decimal atan2:0.58800260354756755125'
```
### hypot
static hypot(...n: Value[]): Decimal
Returns a **Decimal** object representing the Euclidean norm of elements in an array.
You can use [DecimalConfig.precision](#decimalconfig) to specify the precision and use [DecimalConfig.rounding](#decimalconfig) to specify the rounding mode.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------------- | ---- | -------------------- |
| n | [Value](#value)[] | Yes | Target array to operate.|
**Return value**
| Type | Description |
| ------------------- | ------------------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the Euclidean norm of the elements.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.hypot(2, 3, 4);
console.info("test Decimal hypot:" + data.toString()); // 'test Decimal hypot:5.3851648071345040313'
```
### max
static max(...n: Value[]): Decimal
Returns a **Decimal** object representing the maximum value among all elements in an array.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ----------------- | ---- | -------------------- |
| n | [Value](#value)[] | Yes | Target array to operate.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the maximum value.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.max(2, 3, 4);
console.info("test Decimal max:" + data.toString()); // 'test Decimal max:4'
```
### min
static min(...n: Value[]): Decimal
Returns a **Decimal** object representing the minimum value among all elements in an array.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------------- |
| n | [Value](#value)[] | Yes | Target array to operate.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the minimum value.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: Decimal = Decimal.min(2, 3, 4);
console.info("test Decimal min:" + data.toString()); // 'test Decimal min:2'
```
### random
static random(): Decimal
Returns a **Decimal** object representing a random number in the range [0, 1).
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing a random number in the range [0, 1).|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------- |
| 10200061 | Crypto unavailable. |
**Example**
```ts
let data: Decimal = Decimal.random();
```
### random
static random(significantDigits: number): Decimal
Returns a **Decimal** object representing a random number in the range [0, 1), with the number of significant digits specified.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name | Type | Mandatory| Description |
| ----------------- | ------ | ---- | ---------------------- |
| significantDigits | number | Yes | Number of significant digits reserved for the random number.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing a random number in the range [0, 1).|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200061 | Crypto unavailable. |
**Example**
```ts
let data: Decimal = Decimal.random(20);
```
### sign
static sign(n: Value): number
Checks the specified number **n**. In the case of n>0, **1** is returned; in the case of n<0, **-1** is returned; in the case of n==0, **0** is returned; in the case of n==-0, **-0** is returned; in any other cases, **NaN** is returned.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Number to check.|
**Return value**
| Type | Description |
| ------ | ---------------------------------- |
| number | Value based on the check result.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let data: number = Decimal.sign(2);
console.info("test Decimal sign:" + data); // 'test Decimal sign:1'
```
### round
static round(n: Value): Decimal
Returns a **Decimal** object representing the specified number *n* rounded to an integer using the rounding mode specified by [DecimalConfig.rounding](#decimalconfig).
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | --------------- | ---- | -------------- |
| n | [Value](#value) | Yes | Target number to operate.|
**Return value**
| Type | Description |
| ------------------- | ----------------------------------------- |
| [Decimal](#decimal) | **Decimal** object representing the integer rounded.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
**Example**
```ts
let x = 3.3333333333333;
let data = Decimal.round(x);
console.info("test Decimal round:" + data.toString()); // 'test Decimal round:3'
```
### set
static set(object: DecimalConfig):void
Sets the properties for this **Decimal** object. The properties set by calling this API take effect globally.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Utils.Lang
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------- | ---- | -------------------- |
| object | [DecimalConfig](#decimalconfig) | Yes | Properties to set.|
**Error codes**
For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md).
| ID| Error Message |
| -------- | ------------------------------------------------------------ |
| 401 | Parameter error. Possible causes:
1. Incorrect parameter types;
2. Parameter verification failed. |
| 10200001 | The value of 'DecimalConfig.properties' is out of range. |
| 10200061 | Crypto unavailable. |
**Example 1**
```ts
let data : Decimal = new Decimal(1.2345678901234567);
Decimal.set({
precision: 5,
rounding: 4,
toExpNeg: -7,
toExpPos: 7,
maxE: 9e15,
minE: -9e15,
modulo: 1,
crypto: false
})
let data1 : Decimal = data.add(0.5);
console.info("test Decimal set:" + data1.toString()); // "test Decimal set:1.7346"
// Set all properties to their default values.
Decimal.set({ defaults: true })
let data2 : Decimal = data.add(0.5);
console.info("test Decimal set:" + data2.toString()); // "test Decimal set:1.7345678901234567"
// Set the maximum number of significant digits to 10 and retain the default values for other properties.
Decimal.set({ precision: 10, defaults: true })
let data3 : Decimal = data.add(0.5);
console.info("test Decimal set:" + data3.toString()); // "test Decimal set:1.73456789"
// Usage of toExpNeg and toExpPos:
Decimal.set({ toExpNeg: -7 })
let x0 : Decimal = new Decimal(0.00000123) // x0:'0.00000123'
let x1 : Decimal = new Decimal(0.000000123) // x1:'1.23e-7'
Decimal.set({ toExpPos: 2 })
let y0 : Decimal = new Decimal(12.3) // y0:'12.3'
let y1 : Decimal = new Decimal(123) // y1:'1.23e+2'
// All data is expressed in scientific notation.
Decimal.set({ toExpPos: 0 })
// Usage of minE and maxE:
Decimal.set({ minE: -500 })
let a0 : Decimal = new Decimal('1e-500') // a0:'1e-500'
let a1 : Decimal = new Decimal('9.9e-501') // a1:'0e0'
Decimal.set({ minE: -3 })
let b0 : Decimal = new Decimal(0.001) // b0:'0.001'
let b1 : Decimal = new Decimal(0.0001) // b1:'0e0'
Decimal.set({ maxE: 500 })
let c0 : Decimal = new Decimal('9.999e500') // c0:'9.999e+500'
let c1 : Decimal = new Decimal('1e501') // c1:'Infinity'
Decimal.set({ maxE: 4 })
let d0 : Decimal = new Decimal(99999) // d0:'9.9999e+4'
let d1 : Decimal = new Decimal(100000) // d1:'Infinity'
```
**Example 2**
```ts
// /entry/src/main/ets/pages/test.ets
export function test(){
let data : Decimal = new Decimal(1.2345678901234567);
Decimal.set({
precision: 5,
rounding: 0,
toExpNeg: -7,
toExpPos: 7,
maxE: 9e15,
minE: -9e15,
modulo: 1,
crypto: false
})
let data1 : Decimal = data.add(0.5);
console.info("test Decimal set:" + data1.toString()); // 'test Decimal set:1.7346'
}
```
```ts
// /entry/src/main/ets/pages/Index.ets
import {test} from './test'
let data : Decimal = new Decimal(1.2345678901234567);
Decimal.set({
precision: 6,
rounding: 1,
toExpNeg: -7,
toExpPos: 7,
maxE: 9e15,
minE: -9e15,
modulo: 1,
crypto: false
})
let data1 : Decimal = data.add(0.5);
console.info("test Decimal set:" + data1.toString()); // 'test Decimal set:1.73456'
test();
data1 = data1.add(0); // data1:'1.7346'
console.info("test Decimal set:" + data1.toString()); // 'test Decimal set:1.7346'
```