溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎樣解決4種databases PMSO 在精度計算中的問題

發(fā)布時間:2021-12-06 11:23:34 來源:億速云 閱讀:100 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了怎樣解決4種databases PMSO 在精度計算中的問題,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1  Oracle 中的計算,不同的位置的計算會造成最終的結(jié)果不同的問題,請見下圖

怎樣解決4種databases PMSO 在精度計算中的問題

2 官方給出的解答是,直接計算會返回不具有IEEE 754 方式的四舍五入的浮點算法。

3 官方推薦的正確計算方式是,添加 to_number的方式,來進行相關(guān)的數(shù)值計算后,
在進行四舍五入的計算,這樣獲得的值,則不會像上面一樣,會有different values 的
存在。

怎樣解決4種databases PMSO 在精度計算中的問題

4 這樣的問題在 SQL SERVER 中存在不存在,答案是存在,并且更難搞
首先我們照搬上面的計算,圖中很清楚的看到,結(jié)果和ORACLE 不同如初一轍

怎樣解決4種databases PMSO 在精度計算中的問題

我們按照慣性思維的方式,我們用ORACLE 同樣的方式來處理看看結(jié)果怎么樣

怎樣解決4種databases PMSO 在精度計算中的問題

結(jié)果和ORACLE 不同,即使使用雙精度的數(shù)字進行計算還是造成計算順序不同,而值不同的情況,

則解決的方法有兩個

方法1  多添加保留位,在圖中我們可以看到,結(jié)果是一致的,但我想很多開發(fā)的同學(xué)都不大會滿意

怎樣解決4種databases PMSO 在精度計算中的問題

方法2 使用menoy類型來進行變換,結(jié)果是一致的

怎樣解決4種databases PMSO 在精度計算中的問題

那如果此種情形發(fā)生在MYSQL 數(shù)據(jù)庫中呢?
同樣 MYSQL 中存在同樣的問題

怎樣解決4種databases PMSO 在精度計算中的問題

這里MYSQL的處理方式稍微不同,雖然我們添加了 decimal 但如果還是保留2位小數(shù),則結(jié)果還是不對,這里比需要的值多保留一位,則結(jié)果就一致了。

怎樣解決4種databases PMSO 在精度計算中的問題

最后,PostgreSQL 怎么來進行下面的事情

在眾多的數(shù)據(jù)庫中,只有POSTGRESQL 給出了事情的真相,順序不同計算的結(jié)果是不同的

怎樣解決4種databases PMSO 在精度計算中的問題

在Postgresql 中可以通過類似MYSQL 的方式進行計算等式的修改后,兩種計算獲得同樣的計算結(jié)果

怎樣解決4種databases PMSO 在精度計算中的問題

上述內(nèi)容就是怎樣解決4種databases PMSO 在精度計算中的問題,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI