這篇文章帶給大家的內容是關於python小數的進位與捨去的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
一、基礎知識準備
奇進偶舍,又稱為四捨六入五成雙規則、銀行進位法(Banker's Rounding),是一種計數保留法,是一種數值修約規則。從統計學的角度,「奇進偶舍」比「四捨五入」更為精確:在大量運算時,因為捨入後的結果有的變大,有的變小,更使舍入後的結果誤差均值趨於零。而不是像四捨五入那樣逢五就進位,導致結果偏向大數,使得誤差產生累積進而產生系統誤差。 「奇進偶舍」使測量結果受到捨入誤差的影響降到最低。
數值修約(rounding off for values)-在進行具體的數字運算前,透過省略原數值的最後若干位數字,調整保留的末位數字,使最後所得的值最接近原數值的過程。
Infinity 無窮
NaN(Not a Number,非數)是電腦科學中數值資料類型的一類值,表示未定義或不可表示的值。常在浮點數運算中使用。首次引進NaN的是1985年的IEEE 754浮點數標準。在浮點數運算中,NaN與無窮大的概念不同,儘管兩者皆是以浮點數表示實數時的特殊值。無效操作(Invalid Operation)同樣也不同於算術溢位(可能傳回無限大)和算術下溢位(可能傳回最小的一般數值、特殊數值、零等)。 IEEE 754-1985中,以指數部分全為1、小數部分非零表示NaN。以32位元IEEE單精度浮點數的NaN為例,按位表示即:S111 1111 1AXX XXXX XXXX XXXX XXXX XXXX,S為符號位,符號位S的取值無關緊要
#在python中進行精確的數值運算時,一般採用decimal
模組對小數進行運算,其中用到了,十進制數decimal number, context算數上下文參數, signals訊號資訊
我們發現,使用round()
取整小數時,並不是想要的四捨五入,原因就在於取整規則是採用了奇進偶舍(四捨六入)的方式,簡單來說就是,整數部分為奇數,四捨五入.如果是偶數,就採用五捨六入的方式,而這個規則,就屬於數值修約
的規則
二. quantize
quantize`(*exp* [,*rounding* [,*context* [,*watchexp* ] ] ] )
舍入後傳回一個等於第一個運算元的值,並具有第二個運算元的指數。
>>> Decimal('1.41421356').quantize(Decimal('1.000')) Decimal('1.414')
三.實現四捨五入
舍入後傳回一個等於第一個運算元的值,並有第二個運算元的指數。這個exp的指數就是左邊數的指數,exponent
# 实现四舍五入的方法 >>> from decimal import Decimal, ROUND_HALF_UP >>> Decimal('0.375').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP) Decimal('0.38') >>> Decimal('0.125').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP) Decimal('0.13')
【相關推薦:Python影片教學】
以上是python小數的進位與捨去的介紹(附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!