Python 中保留指定位數小數用round就可以了嗎?

2021-03-02 算法美食屋

在項目實踐中,程式設計師經常會收到產品經理保留指定位數小數的需求。

在Python語言中,我們通常會使用內置函數round來完成這個功能,保留指定位數的小數。

round的用法非常簡單。例如:

那麼,這個函數是否就是一個完美的解決方案呢?答案是否定的,round這個函數存在這樣幾個缺點。

1,round有時候無法正確地四捨五入。

實際上round這個函數的捨入的原則是:四捨六入五平分。

"五平分"就是出現5時,是進位加一還是捨去基本是一半一半的。

2,round會自動捨去末尾的0.

有沒有什麼方法能夠規避以上缺點呢?可以試試這個方法。

from decimal import Decimal,ROUND_HALF_UP
def smart_round(x,n):
    return str(Decimal(x).quantize(Decimal("0."+"0"*n),rounding=ROUND_HALF_UP))

這個函數能夠很好地解決四捨五入和末尾為0的這兩個問題。

注意的是,為了規避末尾為0的問題,這個函數的返回值是一個str類型。

其輸入參數可以是float類型或者str類型,但推薦使用str類型。

根據四捨五入原則保留指定位數小數的方法,你get到了嗎?😋😋

在看和分享,也是一種讚賞❤️

相關焦點

  • 只會用Round函數保留位數?這些函數也可以認識一下!
    在第一期中給大家介紹了ROUND函數,將數據按照指定的小數位數進行四捨五入運算得到的結果,那麼,如何用公式按照需要(向上或向下取值)保留小數呢?今天繼續給大家介紹ROUNDUP、ROUNDDOWN以及INT函數。
  • Excel中保留小數點位數
    今天老闆讓我把帶有小數點的表格進行整理,老闆說把數據整理成保留兩位小數(默認為四捨五入),老闆還要整理成一種不四捨五入的數據。
  • Excel Round函數的使用方法,含批量給公式添加Round保留小數實例
    在 Excel 中,Round函數是一個比較好用的保留小數函數,它會把小數按指定位數保留小數位數、整數自動取整,而不像設置單元格格式保留小數位數,無論是小數還是整數都保留指定小數位數。Round函數保留小數位數分為三種情況,分別為保留指定小數位數、取整和從小數點處向左移位。
  • excel中數值的保留指定位數,還有這麼多方式!
    在excel,我們通常會通過設置單元格格式中的數值保留小數位數,但是這種方法保留的小數位數僅僅改變了顯示效果,實際內容仍然是原來的數值。比如下圖中3.1415926,按下ctrl+1,在單元格格式中數值保留兩位小數後,單元格中顯示的是3.14,但是在編輯區,仍然是3.1415926。
  • 函數哥:對數據進行位數保留的必殺技之一,round函數首當其衝!
    函數哥:能對excel表中數據進行位數保留的必殺技之一,round函數首當其衝!在excel數據處理中,如何對數據進行數位保留後四捨五入的處理。那麼,round函數是一個非常有效的函數,他會按照指令保留相應位數,round函數有3種使用場景:1.保留指定小數位數;2.整數取整;3.從小數點向左移以下是round函數的使用方法與案例解析,先來看一個案例:溫馨提示:文末有PDF資料的領取方式
  • ROUND(四捨五入)計算指定位數四捨五入某個數字
    ROUND函數中,ROUND函數有兩個參數,第一個表示要處理的數據,第二個表示要保留的數值位數/小數位數,它有3種情況:(例1)如果num_digits大於0(零),則將數字四捨五入到指定的小數位。如輸入=round(4.489,2)則會出現數字4.49,即按兩位小數進行四捨五入。Rounddown函數:是按指定位數捨去數字指定位數後面的小數。如輸入=rounddown(5.578,2)則會出現數字5.57,將兩位小數後的數字全部舍掉了。
  • python浮點數的位數取捨和四捨五入問題
    發現中的道道還是很多的,今天我們學習更多的道道。首先學習對結果的處理,我們對浮點數的處理,一個是有效數字的位數,也就是小數點後面有幾位有效數字。另一個是在取捨的時候,產生的四捨五入問題。如果一個數字是這樣的。
  • excel怎麼保留小數位數 手把手教你在Excel中設置保留的小數位數
    excel怎麼保留小數位數 手把手教你在Excel中設置保留的小數位數時間:2018-04-24 08:26   來源:系統天堂   責任編輯:沫朵 川北在線核心提示:原標題:excel怎麼保留小數位數 手把手教你在Excel中設置保留的小數位數 excel怎麼保留小數位數?
  • excel怎麼保留小數位數?
    excel怎麼保留小數位數?時間:2017-01-30 22:54   來源:系統天堂   責任編輯:毛青青 川北在線核心提示:原標題:excel怎麼保留小數位數? excel怎麼保留小數位數?最近有小夥伴遇到這個問題,製作表格的時候我們只想小數點後面兩位,但是默認保留好長一串,怎麼才能保留兩位數呢!
  • Round函數實例詳解
    昨天的Excel計算有誤差教程推送中,我們帶出了捨入函數。
  • Excel捨入函數round,roundup,rounddown,mround,int,ceiling,floor,trunc
    函數將數字四捨五入到指定的位數。round(數值,小數位數)roundup函數朝著遠離 0(零)的方向將數字進行向上捨入。roundup(數值,小數位數)rounddown函數朝著零的方向將數字進行向下捨入。
  • 不會保留小數點位數,做出來的表格難看,巧用ROUND函數解決
    先提問一下,在Excel中,利用公式計算時,計算出來的結果有時候會有N多位小數,很多同學是不是就直接選擇單元格格式設置「數值」保留兩位小數點,就OK了。然鵝,有沒有細心的同學發現,這樣設置單元格的數值格式保留的結果,複製粘貼到別的表上去的時候,又變成了好多好多位小數呀。那麼今天就要講一個簡單實用的函數,幫助大家快速解決這個問題。
  • 關於Python的四捨五入詳解(確定你真的會四捨五入?)
    提出問題   1.在實際應用python解決問題中我們會需要用到round()函數,可是round()的確在遇到一些特殊問題的時候出現了弊端,我們應該如何去解決呢?1、round()函數簡介正如菜鳥教程中說到,round() 方法返回浮點數x的四捨五入值。如圖所示,參數x,n均為數值表達式,返回值為x的四捨五入值。n為保留的小數位數,不加n則只保留x四捨五入後的整數部分。
  • round函數怎麼用 round函數的使用方法
    Excel是我們工作中常用到的軟體之一,而在文檔中,我們常常需要進行四捨五入,這時候就要用到round函數了,那round函數怎麼用呢?下面我們就一起來看看吧。round函數怎麼用 首先啟動excel軟體,打開一份事先準備需要設置四捨五入的數據。
  • 20多個python實用小例子(23)--如何對數值進行精確的小數計算
    場景我們有些場景下需要處理金融的相關數據,比如:金額、對帳數據、各行業的金融報表等等,如果使用float類型的時候,小數位數多了之後
  • Python 編寫程序實現將任意十進位正小數m轉換成n進位的正小數,小數點後保留10位小數
    題目描述:編寫程序實現將任意十進位正小數m轉換成n進位的正小數,小數點後保留10位小數。
  • ROUNDDOWN函數:向下按照指定位置(靠近0方向)進行進位
    上一篇寫了關於roundup函數的使用,本篇重點介紹rounddown函數的使用方法,大家也可能看出來了roundup與rounddown的關係了,roundup函數是向上進位,那麼rounddown函數就是向下進位了。
  • round函數的使用技巧以及是實際工作中的使用
    我們在實際工作中經常會遇到分項計算的和匯總的金額相差一分錢,尤其是在計算工資的時候,很多單位的工資在計算的時候,有一分錢的誤差,導致銀行發不出工資。具體是什麼原因呢?為什麼有一分錢的誤差。round函數
  • round、roundup和rounddown函數的使用方法
    不少朋友都會問在excel中round、roundup和rounddown函數怎麼用,今天就介紹一下這三個函數的使用方法。num_digits>0時,表示取小數點後對應位數的四捨五入數值。num_digits=0時,表示則將數字四捨五入到最接近的整數。num_digits< 0時,表示對小數點左側前幾位進行四捨五入。
  • Python基礎_格式化輸出
    %f ——保留小數點後面六位有效數字  %.3f,保留3位小數位%e ——保留小數點後面六位有效數字,指數形式輸出  %.3e,保留3位小數位,使用科學計數法%g ——在保證六位有效數字的前提下,使用小數方式,否則使用科學計數法  %.3g,保留3位有效數字,使用小數或科學計數法>>> print('%f' % 1.11) # 默認保留6位小數1.110000>>> print('%.1f' % 1.11) # 取1位小數1.1>>> print('%e' % 1.11)