python 中四捨五入方法的整理

2021-02-13 數海隨記
1. 使用 math 庫進行向上、向下取整
import math

print(f'對 2.675 向上取整:{math.ceil(2.675)}')
print(f'對 2.135 向上取整:{math.ceil(2.135)}')
print(f'對 2.675 向下取整:{math.floor(2.675)}')
print(f'對 2.135 向下取整:{math.floor(2.135)}')

2. 使用 round 函數對浮點數進行不精確四捨五入
print(f'使用 round 函數對 2.675 取小數點後 2 位:{round(2.675,2)}')
print(f'使用 round 函數對 2.135 取小數點後 2 位:{round(2.135,2)}')

3. 使用 decimal 庫對浮點數進行精確四捨五入「強烈推薦此方法」
from decimal import *

x = Decimal('2.675')
y = Decimal('2.135')
print('使用 decimal 庫的 ROUND_HALF_UP 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_HALF_UP)))
print('使用 decimal 庫的 ROUND_HALF_UP 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_HALF_UP)))

4. decimal 庫 quantize() 方法的 rounding 參數❝

「ROUND_CEILING:捨入方向為正無窮」

「ROUND_DOWN :捨入方向為零」

「ROUND_FLOOR :捨入方向為負無窮」

「ROUND_HALF_DOWN :捨入到最接近的數,同樣接近則捨入方向為零」

「ROUND_HALF_EVEN :捨入到最接近的數,同樣接近則捨入到最接近的偶數(默認值)」

「ROUND_HALF_UP :捨入到最接近的數,同樣接近則捨入到零的反方向」

「ROUND_UP :捨入到零的反方向」

「ROUND_05UP :如果最後一位朝零的方向捨入後為 0 或 5 則捨入到零的反方向;否則捨入方向為零」

print('使用 decimal 庫的 ROUND_CEILING 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_CEILING)))
print('使用 decimal 庫的 ROUND_CEILING 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_CEILING)))
print('使用 decimal 庫的 ROUND_DOWN 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_DOWN)))
print('使用 decimal 庫的 ROUND_DOWN 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_DOWN)))
print('使用 decimal 庫的 ROUND_FLOOR 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_FLOOR)))
print('使用 decimal 庫的 ROUND_FLOOR 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_FLOOR)))
print('使用 decimal 庫的 ROUND_HALF_DOWN 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_HALF_DOWN)))
print('使用 decimal 庫的 ROUND_HALF_DOWN 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_HALF_DOWN)))
print('使用 decimal 庫的 ROUND_HALF_EVEN 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_HALF_EVEN)))
print('使用 decimal 庫的 ROUND_HALF_EVEN 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_HALF_EVEN)))
print('使用 decimal 庫的 ROUND_UP 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_UP)))
print('使用 decimal 庫的 ROUND_UP 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_UP)))
print('使用 decimal 庫的 ROUND_05UP 參數對 2.675 取小數點後 2 位:{}'.format(x.quantize(Decimal('1.00'),rounding=ROUND_05UP)))
print('使用 decimal 庫的 ROUND_05UP 參數對 2.135 取小數點後 2 位:{}'.format(y.quantize(Decimal('1.00'),rounding=ROUND_05UP)))

5. 使用 format 進行指定位數截斷
print('保留 2.675 小數點後 2 位:{:.2f}'.format(2.675))
print('保留 2.135 小數點後 2 位:{:.2f}'.format(2.135))

6. 使用 / 進行除法
print('對 2.675 進行除法:{}'.format(2.675 / 2))
print('對 2.135 進行除法:{}'.format(2.135 / 2))

7. 使用 // 進行整除
print('對 2.675 進行整除:{}'.format(int(2.675 // 2)))
print('對 2.135 進行整除:{}'.format(int(2.135 // 2)))

8. 使用 % 進行取餘

print('對 2.675 進行取餘:{:.2f}'.format(2.675 % 2))
print('對 2.135 進行取餘:{:.2f}'.format(2.135 % 2))

9. 代碼下載「Github 項目地址」:https://github.com/don2vito/wechat_project.git「Gitee 項目地址」:https://gitee.com/don2vito/wechat_official_account.git歡迎關注

相關焦點

  • ROUND(四捨五入)計算指定位數四捨五入某個數字
    ROUND計算指定位數四捨五入某個數字大家好,這節課我們來學習一下Round函數。ROUND,這個函數對於要計算錢的工作崗位尤其重要,人資計算稅金,財務計算工資,經常都會碰到小數點後幾位的數字,一般的做法就是直接在格式裡修改為保留2位小數。但是這個做法會有一個很大的隱患。Round函數可以計算按指定位數進行四捨五入的數值。
  • 你被「四捨五入」了嗎?
    在市場上買東西,商販們多數都會採用「四捨五入」的方法,如果超過二三兩,商販們多數都會忽略不計,讓利給顧客。可是在超市或快遞行業的「四捨五入」法卻有些不同,在超市超五角以上的尾數,就會收取一元,要是寄快遞,不足一公斤的,按一公斤算,儘管有些貨物重量只超過一兩二兩,也得按照一公斤算。這樣的「四捨五入」算法,讓不少消費者感覺不妥。
  • 你會用英語說「四捨五入」嗎?
    聰明的你是否曾經注意過在使用 Excel 時,有時為了方便就需要對數字進行「四捨五入」老師會教你利用【ROUND()函數】來對數字進行「四捨五入」參數1表示進行四捨五入的數值參數2表示四捨五入時採用的位數
  • 電子秤「四捨五入」教程,掙多少錢就看你會不會算
    作為日常交易的計量工具,總有些不良的商家動些歪心思,在電子秤上動手腳來獲取大的利益;缺斤少兩的事件屢見不鮮,今天就來說說電子秤「四捨五入」的故事。1000克豬肉少80克市民林先生到菜市場買菜,來到豬肉攤,買了一公斤豬肉,商販切了一塊,看了看秤,差點便到兩斤,於是又隨手切了一小塊丟進塑膠袋,在電子秤上按了一下,隨即商販說道:「不用稱了,多點就多點吧。」
  • 因四捨五入產生
    記者梳理類似網帖發現,通過對電子秤按「0」操縱價格的傳言主要分為兩種:一種是在小數點後的數字後,多輸入「0」,顯示的價格與不輸入「0」不同;一種是不按常規方法輸入價格,例如,21元輸入0.21,56元輸入0.56,最後的價格再乘100。按照這兩種操作方法,計算出的價格與實際價格不一樣。
  • JavaScript用Math.round方法將一個數四捨五入到整數
    基本概念 Math.round()方法用於將它的參數四捨五入到最接近的整數,如果最接近的整數有兩個(此時參數的小數部分為0.5),那麼結果就是更接近正無窮的那一個(或者說數值較大的那一個);如果它的參數原本就是整數,那麼結果就是該參數自身。
  • 四捨六入五成雙修約法
    修約種類四捨五入修約規則四捨六入五成雙修約規則四捨六入五成雙  四捨六入五成雙含義對於位數很多的近似數,當有效位數確定後,其後面多餘的數字應該捨去,只保留有效數字最末一位,這種修約(捨入)規則是「四捨六入五成雙」,也即「4舍6入5湊偶」,這裡「四」是指≤4 時捨去,"六"是指≥6時進上,"五"指的是根據5後面的數字來定,當5後有數時,舍5入1;當5後無有效數字時,需要分兩種情況來講
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。Python正式由於這些模塊的出現,只要引入這個模塊,調用這個模塊的集成函數,問題迎刃而解;不需要從頭開始,節省了大量的時間。
  • 你確定你真的學了Python?
    不就是0.1嘛」但是如果你用 python 去執行一下,會發現結果跟你想的不太一樣,如下圖:>>> 1.1 - 10.10000000000000009這樣大家是不是發現了什麼問題?是的,浮點數在運算過程中並沒有保證完全精確,是什麼原因導致了這種現象呢?
  • 超重一兩按一公斤算 快遞公司稱重「五入四不舍」
    在市場上買東西,商販們多數都會採用「四捨五入」的方法,如果超過二三兩,商販們多數都會忽略不計,讓利給顧客。可是快遞行業所說的「四捨五入」法卻有些不同,不足1公斤的,按1公斤計算,儘管有些貨物重量只是超過一兩二兩,也得按照一公斤計算,如此算來,卻讓不少消費者感到有些不妥。  快遞稱重「四捨五入」另有門道  薛城市民韓先生上周二給外地的一位朋友郵寄點貨物。
  • 加快Python算法的四個方法(二)Numba
    CDA數據分析師 出品相信大家在做一些算法經常會被龐大的數據量所造成的超多計算量需要的時間而折磨的痛苦不已,接下來我們圍繞四個方法來幫助大家加快一下Python的計算時間,減少大家在算法上的等待時間。今天給大家介紹Numba這一塊的內容。1.簡介所以什麼是Numba呢?
  • 不學Python哪來的月入過萬?
    #python#書中自有黃金屋姐姐比我大十幾歲,很早就一個人出去闖蕩了,零幾年就一個人出遠門做手術,再到後來出國留學我的工作很簡單,每天就整理資料,負責前臺接待,在整理資料的過程中我發現,初入職場的應屆畢業生工資差別這麼大,有的實習期工資3000,有的實習期工資就有6000+,明明是同一個崗位,差別整麼就這麼大呢,姐姐說這就是我一直要你學習Python的原因吶!
  • Python自學筆記,編程中簡單的加減乘除
    其實程式語言中的加減乘除和我們日常生活中的加減乘除也是相同的,只是有一些符號上的區別。Python中可以先將運算先用一個值來接收它,本次運算結束之後,我們可以直接輸入接收的那個值再進行下一步的運算。是不是聽起來很暈,我們接下來用圖說明。是不是很簡單。
  • 用Python畫朵玫瑰,只要五分鐘
    最近一個項目在用python,想著這次不用java了,用python給媽媽個禮物吧。Turtle庫是Python語言中一個非常強大的繪製圖像的函數庫,她提供了很多強大的方法,可以方便快速的繪圖,今天我們就來試一下,畫朵玫瑰送給媽媽。
  • Python中數據類型,你知道多少
    print(10 + '20')在Python中,有如下基本的數據類型:整型整型的常見方法為::# 保留小數的位數(四捨五入) --roundprint(round(3.1415926, 4)) # 輸出結果為:3.1416# 小數取整兩個常見的方法:math.ceil() 和math.floor() # math.ceil() -- 返回數字的上入整數 --- 比如:math.ceil(4.1) --> 5 math.ceil
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    方法四:numpy.linalg.lstsq這是通過矩陣分解計算線性方程組的最小二乘解的基本方法。來自numpy包的簡便線性代數模塊。在該方法中,通過計算歐幾裡德2-範數||b-ax||2最小化的向量x來求解等式ax = b。該方程可能有無數解、唯一解或無解。
  • 「python學習手冊-筆記」003.數值類型
    的運算符上表中基本把python中的運算符表達式全部列舉出來了.這是由於浮點數是有限的比特位數,導致無法精確的表示某些數值.這個問題不僅在python中存在,在其他語言中同樣存在. 不過python有分數和小數,可以很好的規避這些問題. 畢竟python適合科學計算的特性不是白來的.python中的除法python中有三種風格的除法和兩種除法運算符.
  • Python の在 VSCode 中使用 IPython Kernel 的方法
    本文介紹,在 VSCode 使用 IPython Kernel,的設置方法。要達到的效果:只需按下 Ctrl+;,選中的幾行代碼,就會自動發送到 IPython Kernel,並運行,得到結果!當然,快捷鍵也可以另行設置!
  • 對數值四捨五入的函數!
    有時我們需要對數值四捨五入,所謂四捨五入就是對數值進位或者捨去。
  • [小技巧]你真的了解C#中的Math.Round麼?
    開發者為了實現小數點後 2 位的四捨五入,編寫了如下代碼,var num = Math.Round(12.125, 2);代碼非常的簡單,開發者實際得到的結果是 12.12, 這與其所預期的四捨五入結果 12.13 相悖。