您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎樣解決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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。