MySQL 中 Decimal, Float, Double 的区别

MySQL中处理金额数据时,Decimal类型是精确存储,适合财务计算,而Float和Double为近似存储,可能导致计算不精确。Decimal(10, 5)代表5位小数和5位整数,超出限制会四舍五入或报错。对于大资金流水,需要选择合适的Decimal整数位,如decimal(13, 2)适用于普通交易,大额交易可能需要更高的位数。" 80919011,7660216,Spark数据读取与保存:文件格式与文件系统详解,"['Spark', '大数据处理', '文件系统', '数据存储', '数据读取']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将正常两位小数的数据源写入mysql后,再进行求和汇总等计算,结果常常发现会差个几分钱,这很有可能是mysql中关于金额的类型没有设置正确导致的。

先看下mysql中有哪些常用的表示小数的类型:

Name CTS Type Description Significant Figures Range (approximate)
float System.Single 32-bit single-precision floating point 7 ±1.5 × 10?45 to ±3.4 × 1038
double System.Double 64-bit double-precision floating point 15/16 ±5.0 × 10 ?324 to ±1.7 × 10308
decimal System.Decimal 128-bit high precision decimal notation 28 ±1.0 × 10?28 to ±7.9 × 1028

从上表可以看出,decimal的有效位数很大,达到了28位,但是表示的数据范围却比float和double类型小。

凡是跟钱相关的都需要使用 Decimal。
Decimal 是精确存储
float, double 是近似存储,并不精确。

decimal是128位高精度浮点数,具有更高的精度和更小的范围,这使它适合于财务和货币计算。所以一般的财务软件在处理时,都会用decim

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值