---
source_url: https://docs.dolphindb.cn/zh/funcs/d/decimalMultiply.html
fetched_at: 2026-05-19T09:18:24Z
category: funcs
title: decimalMultiply
sha1: bee2c68d375bdf6ca6eea0d646f32e2d5233ad4f
---

# decimalMultiply

## 语法

`decimalMultiply(X, Y, scale)`

## 详情

DECIMAL 类型的乘法运算，相较于 `mul` 函数或运算符 \*，该函数可以指定计算结果保留的小数位数。

注：

- 在以下情况下，*scale* 参数将会失效，返回值类型为 DECIMAL：

  - 只有一个参数是 DECIMAL 类型（小数位数是 S），且指定的 *scale* 值不等于 S。
  - X 和 Y 都是 DECIMAL 类型（小数位数分别是 S1 和 S2），且指定的 *scale* 值小于
    min(S1, S2) 或大于 S1+S2。
- 当其中一个参数是浮点数时，scale 参数将会失效，并且返回值类型为 DOUBLE。

当 *scale* 参数失效时，该函数的计算结果等同于 X \* Y。

## 参数

**X / Y** 标量或向量，其中至少有一个必须为 DECIMAL 类型。

**scale** 非负整型标量，表示计算结果保留的小数位数。

## 返回值

DECIMAL 或 DOUBLE 类型。

## 例子

```dolphindb
a = decimal32(`1.235, 3);
b = decimal32(`7.5689, 4);
c=decimalMultiply(a, b, 5)
// output
9.34759

typestr(c)
// output
DECIMAL32

decimalMultiply(a, b, 2)   // scale 小于min(3,4)，函数结果等于 a*b
// output
9.3475915

b=float(`7.5689)
c=decimalMultiply(a, b, 5)   // b 是浮点数， 函数结果等于 a*b，且数据类型是 DOUBLE。
// output
9.3475916337

typestr(c)
// output
DOUBLE
```

乘法运算（\*）和 decimalMultiply 的计算结果如果溢出，会自动转换为更高精度的类型。如果无法进行转换，则会抛出异常。

```dolphindb
x = decimal32(1\7, 8)
y = decimal32(1\6, 8)
z = x * y
z
// output
0.0238095223809524
typestr z
// output
DECIMAL64

z = decimalMultiply(x, y, 8)
z
// output
0.02380952
typestr z
// output
DECIMAL64

x = decimal128(1\7, 35)
y = decimal128(1\6, 35)
x*y
// output
x * y => Scale out of bound (valid range: [0, 38], but get: 70)

decimalMultiply(x, y, 35)
// output
decimalMultiply(x, y, 35) => Decimal math overflow
```

*X* 和 *Y* 中至少有一个是向量。

```dolphindb
x = [decimal32(3.213312, 3), decimal32(3.1435332, 3), decimal32(3.54321, 3)]
y = 2.1
decimalMultiply(x, y, 5)
// output
[6.7473,6.6003,7.440300000000001]

x = [decimal32(3.213312, 3), decimal32(3.1435332, 3), decimal32(3.54321, 3)]
y = [decimal64(4.312412, 3), decimal64(4.53231, 3), decimal64(4.31258, 3)]
decimalMultiply(x, y, 5)
// output
[13.85445,14.24407,15.27741]
```
