---
source_url: https://docs.dolphindb.cn/zh/error_codes/S05003.html
fetched_at: 2026-05-19T09:11:07Z
category: error_codes
title: S05003
sha1: 8b93b2fa29a28a7e3e403d962be2bb90b46e6572
---

# S05003

## 错误代码

S05003

## 报错信息

DECIMAL math overflow RefId:S05003

## 错误原因

DECIMAL 类型数据的内部实则使用有符号整型进行存储，详细如下：

- DECIMAL32 使用 `int32_t` 表示。
- DECIMAL64 使用 `int64_t` 表示。
- DECIMAL128 使用 `int128_t` 表示。

对于 N bits 格式的有符号整型数据，其可以表示的数值范围为 [-1 \* 2 ^ (N-1), 2 ^ (N-1) - 1]。如果 DECIMAL
内部的整型数据在参与运算时，其结果超出该可表示范围，就会报这个错误。比如：

- DECIMAL 数据参与计算（计算函数，SQL）；
- 将其他类型的数据转换成 DECIMAL；
- 不同 DECIMAL 类型、不同 *scale* 的 DECIMAL 数据相互转换。

## 解决办法

1. 使用可表示范围更大的 DECIMAL 类型，比如 DECIMAL128。
2. 适当降低 DECIMAL 的参数 *scale*。比如，若数据只需要精确到小数点后 5 位，那么建议将 *scale* 调整为
   5。
3. 使用 FLOAT/DOUBLE 替换 DECIMAL 类型。
