HarmonyOS 高精度数学库(数字计算)Decimal 常用的几个方法

245 阅读3分钟

​Decimal用于提供高精度数学库,主要用于提供高精度浮点运算能力。

1. Decima  --- 构造函数

2. Decimal.set --- 配置属性

3. abs  --- 绝对值

4.floor  --- 向下取整

5. ceil ---  向上取整

6.add  ---  x加y

7. sub ---  x减y

1. 构造函数

用于创建一个Decimal实例。可以接收一个字符串或数字作为初始值,并可选择性地指定舍入模式

1. Decima --- 构造函数

string:表示值类型为字符,可取任意值

number:表示值类型为数字,可取任意值。

Decimal:表示值类型为Decimal类型。

下面是示例代码:

// 使用字符串创建Decimal实例
let num1:Decimal  = new Decimal('123.456');
 
// 使用数字创建Decimal实例
let num2:Decimal = new Decimal(123.456);

// 使用Decimal创建Decimal实例
let num3:Decimal = new Decimal(new Decimal(123.456));

2. Decimal.set --- 配置属性

下面列举二个常用的,如果你还有其他需求请参照官方文档

用于设置Decimal的配置属性,可使用Decimal.set方法进行配置。

Rounding: type Rounding = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 表示可设置的舍入类型。取值类型为下列类型中的并集。

类型说明
0向远离零的方向舍入。与Decimal.ROUND_UP一致。
1向靠近零的方向舍入。与Decimal.ROUND_DOWN一致。
2向正无穷方向舍入。与Decimal.ROUND_CEILING一致。
3向负无穷方向舍入。与Decimal.ROUND_FLOOR一致。
4向最近的邻值舍入。如果距离相等,则远离零方向舍入。与Decimal.ROUND_HALF_UP一致。
5向最近的邻值舍入。如果距离相等,则靠近零方向舍入。与Decimal.ROUND_HALF_DOWN一致。
6向最近的邻值舍入。如果距离相等,则向偶数邻值舍入。与Decimal.ROUND_HALF_EVEN一致。
7向最近的邻值舍入。如果距离相等,则向正无穷方向舍入。与Decimal.ROUND_HALF_CEILING一致。
8向最近的邻值舍入。如果距离相等,则向负无穷方向舍入。与Decimal.ROUND_HALF_FLOOR一致。

Modulo: 表示可设置的取模方法舍入类型。取值类型为下列类型中的并集。

类型说明
Rounding模运算下的舍入类型。与Rounding表示的舍入模式相同。
9余模运算下,余数始终为正。欧几里得除法。与Decimal.EUCLID一致。

代码示例:

let a : Decimal = new Decimal(1.2345678901234567);
Decimal.set({
    precision: 5,
    rounding: 4,
    toExpNeg: -7,
    toExpPos: 7,
    maxE: 9e15,
    minE: -9e15,
    modulo: 1,
    crypto: false
})

3. abs  --- 绝对值

返回一个新的Decimal对象,Decimal的值为参数n的绝对值。

代码示例

let a: Decimal = new Decimal(-0.5).abs();
console.info("test Decimal abs:" + a.toString()); // '0.5'

let a: Decimal = Decimal(-0.5).abs();
console.info("test Decimal abs:" + a.toString()); // '0.5'

4.floor --- 向下取整

返回一个新的Decimal对象,其值为该Decimal向负无穷方向舍入得到的结果。向下取整

代码示例

let a: Decimal = new Decimal(1.8).floor();
console.info("test Decimal floor:" + a.toString()); // '1'

let a: Decimal = Decimal(1.8).floor();
console.info("test Decimal floor:" + a.toString()); // '1'

5. ceil ---  向上取整

返回一个新的Decimal对象,其值为该Decimal向正无穷方向舍入得到的结果。 向上取整

代码示例

let a: Decimal = new Decimal.ceil(1.8);
console.info("test Decimal ceil:" + a.toString()); // '2'


let a: Decimal = Decimal.ceil(1.8);
console.info("test Decimal ceil:" + a.toString()); // '2'

6.add ---  x加y

返回一个值为x加y的和的Decimal对象。

代码示例

let a: Decimal = Decimal.add(0.5, 0.5);
console.info("test Decimal add:" + a.toString()); // '1'

let a: Decimal = new Decimal(0.5).add(0.5);
console.info("test Decimal add:" + a.toString()); // '1'

7. sub --- x减y

返回一个值为x减y的差的Decimal对象。

let a: Decimal = new Decimal.sub(1, 0.5);
console.info("test Decimal sub:" + a.toString()); // '0.5'

let a: Decimal = Decimal.sub(1, 0.5);
console.info("test Decimal sub:" + a.toString()); // '0.5'

还有很多方法 请参考官方文档

制作不易 点个关注再走吧。°(°¯᷄◠¯᷅°)°。