本篇文章为大家展示了怎样解决4种databases PMSO 在精度计算中的问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1 Oracle 中的计算,不同的位置的计算会造成最终的结果不同的问题,请见下图
2 官方给出的解答是,直接计算会返回不具有IEEE 754 方式的四舍五入的浮点算法。
3 官方推荐的正确计算方式是,添加 to_number的方式,来进行相关的数值计算后,
在进行四舍五入的计算,这样获得的值,则不会像上面一样,会有different values 的
存在。
4 这样的问题在 SQL SERVER 中存在不存在,答案是存在,并且更难搞
首先我们照搬上面的计算,图中很清楚的看到,结果和ORACLE 不同如初一辙
我们按照惯性思维的方式,我们用ORACLE 同样的方式来处理看看结果怎么样
结果和ORACLE 不同,即使使用双精度的数字进行计算还是造成计算顺序不同,而值不同的情况,
则解决的方法有两个
方法1 多添加保留位,在图中我们可以看到,结果是一致的,但我想很多开发的同学都不大会满意
方法2 使用menoy类型来进行变换,结果是一致的
那如果此种情形发生在MYSQL 数据库中呢?
同样 MYSQL 中存在同样的问题
这里MYSQL的处理方式稍微不同,虽然我们添加了 decimal 但如果还是保留2位小数,则结果还是不对,这里比需要的值多保留一位,则结果就一致了。
最后,PostgreSQL 怎么来进行下面的事情
在众多的数据库中,只有POSTGRESQL 给出了事情的真相,顺序不同计算的结果是不同的
在Postgresql 中可以通过类似MYSQL 的方式进行计算等式的修改后,两种计算获得同样的计算结果
上述内容就是怎样解决4种databases PMSO 在精度计算中的问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。