You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Decimal类型是否存在最大精度?39位数字转换出现精度丢失

Swift Decimal类型的精度限制说明

Swift中的Decimal并非真正的任意精度类型,它存在明确的精度上限,你的测试结果正是这个限制导致的。

核心限制说明

Decimal(底层基于Foundation的NSDecimal)采用96位二进制编码存储十进制数值,最多支持38位有效数字。当输入的数值有效数字超过38位时,超出部分会被舍入(或截断)到最接近的可表示值——你的测试字符串有39位有效数字,超出了38位的上限,因此末尾的6被截断为0,得到近似值。

官方文档依据

苹果官方文档明确标注了Decimal的精度特性:

Decimal使用96位整数作为尾数,指数范围为-128到127,因此它可以精确表示最多38位十进制有效数字的数值。超出该范围的数值会被近似为最接近的可表示值。

解决方向

如果需要支持真正的任意精度十进制运算,建议使用第三方库(比如BigDecimal)来实现,原生Decimal无法满足超38位有效数字的精确存储需求。

内容的提问来源于stack exchange,提问作者Duncan C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:44:51