189 8069 5689

怎样解决4种databasesPMSO在精度计算中的问题

本篇文章为大家展示了怎样解决4种databases PMSO 在精度计算中的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

在绵竹等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站设计 网站设计制作按需网站制作,公司网站建设,企业网站建设,品牌网站设计,全网营销推广,成都外贸网站建设公司,绵竹网站建设费用合理。

1  Oracle 中的计算,不同的位置的计算会造成最终的结果不同的问题,请见下图

怎样解决4种databases PMSO 在精度计算中的问题

2 官方给出的解答是,直接计算会返回不具有IEEE 754 方式的四舍五入的浮点算法。

3 官方推荐的正确计算方式是,添加 to_number的方式,来进行相关的数值计算后,
在进行四舍五入的计算,这样获得的值,则不会像上面一样,会有different values 的
存在。

怎样解决4种databases PMSO 在精度计算中的问题

4 这样的问题在 SQL SERVER 中存在不存在,答案是存在,并且更难搞
首先我们照搬上面的计算,图中很清楚的看到,结果和ORACLE 不同如初一辙

怎样解决4种databases PMSO 在精度计算中的问题

我们按照惯性思维的方式,我们用ORACLE 同样的方式来处理看看结果怎么样

怎样解决4种databases PMSO 在精度计算中的问题

结果和ORACLE 不同,即使使用双精度的数字进行计算还是造成计算顺序不同,而值不同的情况,

则解决的方法有两个

方法1  多添加保留位,在图中我们可以看到,结果是一致的,但我想很多开发的同学都不大会满意

怎样解决4种databases PMSO 在精度计算中的问题

方法2 使用menoy类型来进行变换,结果是一致的

怎样解决4种databases PMSO 在精度计算中的问题

那如果此种情形发生在MySQL 数据库中呢?
同样 MYSQL 中存在同样的问题

怎样解决4种databases PMSO 在精度计算中的问题

这里MYSQL的处理方式稍微不同,虽然我们添加了 decimal 但如果还是保留2位小数,则结果还是不对,这里比需要的值多保留一位,则结果就一致了。

怎样解决4种databases PMSO 在精度计算中的问题

最后,PostgreSQL 怎么来进行下面的事情

在众多的数据库中,只有POSTGRESQL 给出了事情的真相,顺序不同计算的结果是不同的

怎样解决4种databases PMSO 在精度计算中的问题

在Postgresql 中可以通过类似MYSQL 的方式进行计算等式的修改后,两种计算获得同样的计算结果

怎样解决4种databases PMSO 在精度计算中的问题

上述内容就是怎样解决4种databases PMSO 在精度计算中的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前名称:怎样解决4种databasesPMSO在精度计算中的问题
网页链接:http://cdxtjz.cn/article/ggdhho.html

其他资讯