【Python】round函數四舍五入的坑


 

1、round()函數四舍五入

 1 print(round(10.4))       # ==>10
 2 print(round(10.49))      # ==>10
 3 print(round(10.5))       # ==>10
 4 print(round(10.51))      # ==>11
 5 print(round(10.6))       # ==>11
 6 print('='*50)
 7 print(round(11.4))       # ==>11
 8 print(round(11.49))      # ==>11
 9 print(round(11.5))       # ==>12
10 print(round(11.51))      # ==>12
11 print(round(11.6))       # ==>12

輸出結果:

10
10
10
11
11
==================================================
11
11
12
12
12

小結:

當個位為奇數,小數部分>=0.5入,其余為舍;

當個位為偶數,小數部分>0.5入,其余為舍。

 

2、使用decimal模塊

 1 import decimal
 2 
 3 x = 10.3456
 4 # Context函數,有很多參數,都有默認的值,我們做四舍五入時候,只需要改變兩個參數的值來設置python的context處理環境即可。
 5 # 參數1是prec參數,用來顯示最終的數值位數,這個數值位數包含整數部分和小數部分。
 6 # 參數2是rounding參數,改為ROUND_HALF_UP作為四舍五入方式。
 7 # create_decimal函數,注意參數值是一個字符串,因此需要先將x轉為字符串
 8 x1=decimal.Context(prec=4,rounding=decimal.ROUND_HALF_UP).create_decimal(str(x))
 9 print(x1)
10 print(type(x1))

輸出結果:

10.35
<class 'decimal.Decimal'>

 

3、format()格式化輸出

輸出結果為字符類型的數字

1 x = 10.3456
2 print(format(x,'0.1f'))         # ==>10.3
3 print(format(x,'0.2f'))         # ==>10.3
4 print(format(x,'0.3f'))         # ==>10.3
5 print(type(format(x,'0.1f')))   # ==><class 'str'>

輸出結果:

10.3
10.35
10.346
<class 'str'>

 

總結:

1、若對四舍五入的結果精度要求較高,建議使用decimal模塊,不建議使用round();

2、若僅僅想格式化輸出數據,format()足矣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM