mysql sum float小数问题_处置mysql金额运算sum*float出现多位不精确小数_mysql

当使用MySQL进行金额运算时,特别是涉及SUM和FLOAT类型字段时,可能会遇到精度丢失的问题。解决方法包括将FLOAT字段改为DECIMAL类型,或者在查询时使用BINARY关键字。 DECIMAL类型提供更高的精度,适合处理货币数据。此外,文章还提到了Java实体类中对应的属性应使用BigDecimal类型以保持精度。

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

处理mysql金额运算sum*float出现多位不精确小数

4840.00*0.4500= 2178 SUM(r.sum_rmb_price)*p.default_fee_prop = 2177.9999 sum_rmb_price float(8,2); default_fee_prop float(4,4); 方法一:最好的办法是将float字段改为decimal(16,6)。具体方法:可设置一个临时字段,结合MySQL的关键字binary进行准确复制等。 方法二:使用binary关键字解决。具体操作为“select sum(binary 字段名(float类型))” select sum(a.number*binary(b.price)) as total from ler_card as a left join ler_items as b on a.itemId=b.itemId where user_id=1

http://bbs.chinaunix.net/thread-4113095-1-1.html

http://bbs.chinaunix.net/forum.php?mod=redirect&goto=findpost&ptid=4113095&pid=24076320

mysql字段类型为decimal,则java 实体类的对应属性类型java.math.BigDecimal

9c5d9bcd82360b0378fe7231e4949803.png

MySQL数据类型-decimal详解

对于精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,numeric和decimal同义,numeric将自动转成decimal。

DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。

·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。

欢迎大家阅读《处置mysql金额运算sum*float出现多位不精确小数_mysql》,跪求各位点评,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值