mysql中统计精度问题

来源:互联网 发布:雪梨淘宝店叫什么名字 编辑:程序博客网 时间:2024/05/09 10:07
mysql数据统计
1在订单中计算orderPrice 分别用如下sql进行统计 得到结果如下
SELECT sum(order_price) as orderPrice,sum(price) as splitPrice FROM alipay_shop_split_record WHERE pass_status=1
数据a 1512151.11   数据b 1498940.31

SELECT round(sum(order_price),3) as orderPrice,round(sum(price),3) as splitPrice FROM alipay_shop_split_record WHERE pass_status=1 
数据a 1512151.110  数据b 1498940.314

由于截断误差造成的
因为现在的CPU都是算double的。 
float运算会被转化为double运算,结果四舍五入成float的精度。 
结果0.8999999999...就变成了0.9。 
double相减后面还有n个9,但是被简单截断隐藏了,它不会四舍五入。 
如果你格式化输出数字,你可以看到大约还有15或者16个9。


float,double容易产生误差,对精确度要求比较高时,建议使用decimal来存,decimal在mysql内存是以字符串存储的,

用于定义货币要求精确度高的数据。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 体检发现甲状腺结节怎么办 月子里宝宝感冒怎么办 10天新生儿感冒怎么办 20天新生儿感冒怎么办 新生儿20天鼻塞怎么办 25天新生儿感冒怎么办 42天新生儿感冒怎么办 上呼吸道感染怎么办比较好 小猫咪太调皮怎么办 水晶彩泥弄到衣服上怎么办 进境动植物检疫许可怎么办 跳舞不会听拍子怎么办 税盘丢了注销公司怎么办 认缴资金不到位怎么办 同一单元有凶宅怎么办 有地皮没房产证怎么办 社保资金被侵吞怎么办? 集体计件手脚慢怎么办 发票当月没用完怎么办 非工业用地怎么办环评 商标注册途中英文错误怎么办 孩子的英文不好怎么办 高盛英文不好怎么办 去美国英文不好怎么办 去越南不会英语怎么办 法斗得了毛囊炎怎么办 头发里有毛囊炎怎么办 笔记本画cad慢怎么办 面试打不出问题怎么办 ai撤销多了怎么办 卖钢材没客户怎么办 手抓饼煎的很硬怎么办 微信朋友圈侵权怎么办 tekla工具栏显示不全怎么办 收银员收到假钱怎么办 世联贷款还不上怎么办 皮肤发黄暗沉怎么办 手机默认竖屏怎么办 手机网络没有了怎么办 新生婴儿不睡觉怎么办 婴儿感冒不睡觉怎么办