最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python保留小數(shù)的6種常用方法

 更新時(shí)間:2026年03月18日 09:29:45   作者:超人小子  
日常寫?Python?代碼時(shí),保留小數(shù)是高頻需求,很多新手只會(huì)用round()函數(shù),卻不知道它有?坑,也不清楚不同場景該選哪種方法,今天就給大家整理?6?種?Python?保留小數(shù)的常用方法,從基礎(chǔ)到進(jìn)階,代碼示例可直接復(fù)制運(yùn)行,需要的朋友可以參考下

引言

日常寫 Python 代碼時(shí),保留小數(shù)是高頻需求 —— 比如電商系統(tǒng)顯示訂單金額(保留 2 位)、數(shù)據(jù)分析展示百分比(保留 1 位)、實(shí)驗(yàn)報(bào)告輸出測量結(jié)果(保留 3 位)。很多新手只會(huì)用round()函數(shù),卻不知道它有 “坑”,也不清楚不同場景該選哪種方法。

今天就給大家整理 6 種 Python 保留小數(shù)的常用方法,從基礎(chǔ)到進(jìn)階,代碼示例可直接復(fù)制運(yùn)行,每個(gè)方法都講清 “怎么用、適用場景、注意事項(xiàng)”,新手也能秒懂!

一、先看核心需求:保留小數(shù)要解決什么問題?

舉個(gè)直觀例子:計(jì)算10/3得到3.3333333333333335,但我們需要:

  • 顯示金額:3.33(保留 2 位);
  • 顯示百分比:3.3(保留 1 位);
  • 金融計(jì)算:高精度的3.3333333333(避免精度丟失)。

不同場景對應(yīng)不同方法,下面逐個(gè)拆解。

二、6 種保留小數(shù)的方法(附代碼 + 解析)

方法 1:round () 函數(shù)(最基礎(chǔ),內(nèi)置函數(shù))

round()是 Python 內(nèi)置函數(shù),語法簡單:round(數(shù)字, 保留位數(shù)),核心是四舍五入,適合快速保留小數(shù)。

代碼示例

# 基礎(chǔ)用法
num = 10 / 3
print(f"原始值:{num}")  # 輸出:3.3333333333333335

# 保留2位小數(shù)
print(f"保留2位:{round(num, 2)}")  # 輸出:3.33
# 保留1位小數(shù)
print(f"保留1位:{round(num, 1)}")  # 輸出:3.3
# 不指定位數(shù),默認(rèn)保留0位(取整)
print(f"保留0位:{round(num)}")     # 輸出:3

# 特殊情況:四舍五入的“坑”(不是純數(shù)學(xué)的四舍五入)
print(round(2.675, 2))  # 預(yù)期2.68,實(shí)際輸出2.67(浮點(diǎn)數(shù)精度問題)

核心解析

  • 優(yōu)點(diǎn):內(nèi)置函數(shù),無需導(dǎo)入模塊,代碼最短;
  • 缺點(diǎn):
    1. 浮點(diǎn)數(shù)精度問題導(dǎo)致結(jié)果不符合預(yù)期(如2.675保留 2 位得到2.67);
    2. 適合 “快速粗略保留”,不適合金融、金額等高精度場景;
  • 適用場景:簡單的日常計(jì)算、非高精度的結(jié)果展示。

方法 2:字符串格式化(% 占位符)

%_.xf的格式(x 為保留位數(shù)),本質(zhì)是格式化輸出,不改變數(shù)字本身,適合 “展示結(jié)果”。

代碼示例

num = 10 / 3
print(f"原始值:{num}")  # 3.3333333333333335

# 保留2位小數(shù)(%_.2f)
print("保留2位:%.2f" % num)  # 輸出:3.33
# 保留3位小數(shù)(%_.3f)
print("保留3位:%.3f" % num)  # 輸出:3.333
# 補(bǔ)零:比如1.5保留2位,自動(dòng)補(bǔ)0
print("補(bǔ)零示例:%.2f" % 1.5)  # 輸出:1.50

核心解析

  • 優(yōu)點(diǎn):格式化輸出,自動(dòng)補(bǔ)零,適合打印 / 展示結(jié)果;
  • 缺點(diǎn):返回的是字符串,不是數(shù)字(無法繼續(xù)計(jì)算);
  • 適用場景:終端輸出、日志記錄、報(bào)表展示(只看結(jié)果,不計(jì)算)。

方法 3:format () 函數(shù)(推薦,靈活)

format()是 Python 官方推薦的格式化函數(shù),語法:format(數(shù)字, '.xf'),比%占位符更靈活,支持更多格式。

代碼示例

num = 10 / 3
# 基礎(chǔ)用法:保留2位
print("保留2位:{}".format(format(num, '.2f')))  # 輸出:3.33
# 簡寫形式(更常用)
print("保留2位(簡寫):{:.2f}".format(num))     # 輸出:3.33
# 保留1位+補(bǔ)零
print("保留1位+補(bǔ)零:{:.1f}".format(1.5))        # 輸出:1.5
# 結(jié)合其他格式(比如加千分位)
print("加千分位+保留2位:{:,.2f}".format(12345.6789))  # 輸出:12,345.68

核心解析

  • 優(yōu)點(diǎn):靈活,支持補(bǔ)零、千分位、對齊等,返回字符串但格式可控;
  • 缺點(diǎn):返回字符串,需轉(zhuǎn)數(shù)字才能計(jì)算;
  • 適用場景:復(fù)雜的結(jié)果展示(如帶單位、千分位)、報(bào)表生成。

方法 4:f-string(Python3.6+,最簡潔)

f-string 是 Python3.6 新增的格式化方式,語法:f"{數(shù)字:.xf}",兼顧簡潔和靈活,是日常開發(fā)的 “首選”。

代碼示例

num = 10 / 3
# 保留2位小數(shù)
print(f"保留2位:{num:.2f}")  # 輸出:3.33
# 保留3位小數(shù)
print(f"保留3位:{num:.3f}")  # 輸出:3.333
# 保留1位+補(bǔ)零
print(f"保留1位+補(bǔ)零:{1.5:.1f}")  # 輸出:1.5
# 結(jié)合變量(動(dòng)態(tài)指定保留位數(shù))
n = 2
print(f"動(dòng)態(tài)保留{n}位:{num:.{n}f}")  # 輸出:3.33

核心解析

  • 優(yōu)點(diǎn):語法最簡潔,支持動(dòng)態(tài)指定保留位數(shù),可讀性最高;
  • 缺點(diǎn):返回字符串,Python3.6 以下版本不支持;
  • 適用場景:Python3.6 + 的所有展示場景(日常開發(fā)首選)。

方法 5:decimal 模塊(高精度,適合金融 / 金額)

前面的方法都有浮點(diǎn)數(shù)精度問題,而decimal模塊專門解決 “高精度小數(shù)計(jì)算”,適合金融、金額等對精度要求高的場景。

代碼示例

from decimal import Decimal, ROUND_HALF_UP

# 解決round(2.675, 2)的精度問題
num = Decimal('2.675')  # 注意:用字符串初始化,避免浮點(diǎn)數(shù)精度丟失
# 保留2位小數(shù),四舍五入
res = num.quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
print(f"高精度保留2位:{res}")  # 輸出:2.68

# 對10/3進(jìn)行高精度保留
num2 = Decimal('10') / Decimal('3')
res2 = num2.quantize(Decimal('0.0000'))  # 保留4位
print(f"10/3保留4位:{res2}")  # 輸出:3.3333

核心解析

  • 優(yōu)點(diǎn):高精度,完全符合數(shù)學(xué)上的四舍五入,無精度丟失;
  • 缺點(diǎn):需要導(dǎo)入模塊,語法稍復(fù)雜;
  • 適用場景:金融計(jì)算、金額結(jié)算、稅 務(wù)計(jì)算(高精度要求)。

方法 6:numpy.round(大數(shù)據(jù) / 數(shù)組場景)

如果處理的是 numpy 數(shù)組(數(shù)據(jù)分析、機(jī)器學(xué)習(xí)常用),用numpy.round()更高效,支持對整個(gè)數(shù)組保留小數(shù)。

代碼示例

import numpy as np

# 生成numpy數(shù)組
arr = np.array([10/3, 2.675, 1.5])
print(f"原始數(shù)組:{arr}")  # 輸出:[3.33333333 2.675      1.5       ]

# 對整個(gè)數(shù)組保留2位小數(shù)
arr_round = np.round(arr, 2)
print(f"保留2位后的數(shù)組:{arr_round}")  # 輸出:[3.33 2.68 1.5 ]

核心解析

  • 優(yōu)點(diǎn):專為 numpy 數(shù)組設(shè)計(jì),批量處理效率高;
  • 缺點(diǎn):需要安裝 numpy 庫(pip install numpy);
  • 適用場景:數(shù)據(jù)分析、機(jī)器學(xué)習(xí)(處理大量數(shù)值數(shù)組)。

三、新手必避坑指南(重點(diǎn)?。?/h2>

坑 1:浮點(diǎn)數(shù)本身的精度問題

# 看似2.675,實(shí)際存儲(chǔ)的是近似值
print(2.675)  # 輸出:2.6749999999999998

這就是round(2.675, 2)得到2.67的原因 —— 浮點(diǎn)數(shù)在計(jì)算機(jī)中是二進(jìn)制存儲(chǔ),部分十進(jìn)制小數(shù)無法精確表示。

坑 2:round () 的 “四舍六入五成雙”

Python 的round()不是純數(shù)學(xué)的四舍五入,而是 “四舍六入五成雙”(銀行家舍入):

  • 當(dāng)保留位后一位是 5,且后面無數(shù)字時(shí),保留位為偶數(shù)則舍去,奇數(shù)則進(jìn) 1;
  • 示例:round(1.5)=2,round(2.5)=2(5 后面無數(shù)字,保留位 0 是偶數(shù),舍去)。

坑 3:字符串格式返回的是字符串,不是數(shù)字

res = "%.2f" % 10/3  # 錯(cuò)誤:字符串不能直接除法
# 正確做法:轉(zhuǎn)成浮點(diǎn)數(shù)
res = float("%.2f" % (10/3))
print(res + 1)  # 輸出:4.33

四、不同場景該選哪種方法?(總結(jié)表)

方法優(yōu)點(diǎn)缺點(diǎn)適用場景
round()內(nèi)置函數(shù),簡潔精度問題、四舍五入坑簡單計(jì)算、非高精度展示
% 占位符自動(dòng)補(bǔ)零,適合展示返回字符串終端輸出、簡單報(bào)表
format()靈活,支持多格式返回字符串復(fù)雜展示(千分位、對齊)
f-string最簡潔,支持動(dòng)態(tài)位數(shù)Python3.6+、返回字符串Python3.6 + 的日常展示(首選)
decimal 模塊高精度,無精度丟失語法稍復(fù)雜金融、金額、高精度計(jì)算
numpy.round批量處理數(shù)組高效需安裝 numpy數(shù)據(jù)分析、機(jī)器學(xué)習(xí)(數(shù)組處理)

五、總結(jié)(新手速記)

  1. 日常展示(Python3.6+):優(yōu)先用f-string{num:.2f}),簡潔又靈活;
  2. 高精度計(jì)算(金融 / 金額):用decimal模塊,避免精度丟失;
  3. numpy 數(shù)組處理:用numpy.round()
  4. 簡單粗略保留:用round(),但注意它的四舍五入規(guī)則;
  5. 所有字符串格式方法:如需計(jì)算,記得用float()轉(zhuǎn)成數(shù)字。

建議大家把文中的代碼逐個(gè)運(yùn)行一遍,改改保留位數(shù)、換幾個(gè)數(shù)字,就能快速掌握不同方法的差異。保留小數(shù)看似簡單,選對方法能避免很多隱藏問題,尤其是金融場景,千萬別只用round()哦!

以上就是Python保留小數(shù)的6種常用方法的詳細(xì)內(nèi)容,更多關(guān)于Python保留小數(shù)方法的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python Opencv輪廓常用操作代碼實(shí)例解析

    Python Opencv輪廓常用操作代碼實(shí)例解析

    這篇文章主要介紹了Python Opencv輪廓常用操作代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python多進(jìn)程實(shí)現(xiàn)進(jìn)程間通信實(shí)例

    python多進(jìn)程實(shí)現(xiàn)進(jìn)程間通信實(shí)例

    這篇文章主要介紹了python多進(jìn)程實(shí)現(xiàn)進(jìn)程間通信實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 利用For循環(huán)遍歷Python字典的三種方法實(shí)例

    利用For循環(huán)遍歷Python字典的三種方法實(shí)例

    字典由多個(gè)鍵和其對應(yīng)的值構(gòu)成的鍵—值對組成,鍵和值中間以冒號:隔開,項(xiàng)之間用逗號隔開,整個(gè)字典是由大括號{}括起來的,下面這篇文章主要給大家介紹了關(guān)于如何利用For循環(huán)遍歷Python字典的三種方法,需要的朋友可以參考下
    2022-03-03
  • 詳解python 注釋、變量、類型

    詳解python 注釋、變量、類型

    本文通過實(shí)例代碼較詳細(xì)的給大家介紹了python 注釋、變量、類型的相關(guān)操作及實(shí)現(xiàn)代碼,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • 詳解python的網(wǎng)絡(luò)編程基礎(chǔ)

    詳解python的網(wǎng)絡(luò)編程基礎(chǔ)

    這篇文章主要為大家介紹了python網(wǎng)絡(luò)編程的基礎(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Python使用jpype的踩坑記錄

    Python使用jpype的踩坑記錄

    Pype是一個(gè)能夠讓 python 代碼方便地調(diào)用 Java 代碼的工具,這篇文章主要來和大家分享一下Python使用jpype會(huì)踩的一些坑,希望對大家有所幫助
    2023-06-06
  • Python守護(hù)進(jìn)程和腳本單例運(yùn)行詳解

    Python守護(hù)進(jìn)程和腳本單例運(yùn)行詳解

    本篇文章主要介紹了Python守護(hù)進(jìn)程和腳本單例運(yùn)行,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • python可視化爬蟲界面之天氣查詢

    python可視化爬蟲界面之天氣查詢

    這篇文章主要介紹了python可視化爬蟲界面之天氣查詢的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 踩坑:pytorch中eval模式下結(jié)果遠(yuǎn)差于train模式介紹

    踩坑:pytorch中eval模式下結(jié)果遠(yuǎn)差于train模式介紹

    這篇文章主要介紹了踩坑:pytorch中eval模式下結(jié)果遠(yuǎn)差于train模式介紹,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用python刪除nginx緩存文件示例(python文件操作)

    使用python刪除nginx緩存文件示例(python文件操作)

    這篇文章主要介紹了使用python刪除nginx緩存文件示例(python文件操作),需要的朋友可以參考下
    2014-03-03

最新評論

原阳县| 太湖县| 东源县| 德江县| 教育| 义马市| 谷城县| 西充县| 新蔡县| 三门县| 张家港市| 白河县| 平乡县| 红原县| 尤溪县| 贵州省| 潍坊市| 肇东市| 桦川县| 保定市| 巧家县| 通化县| 江阴市| 买车| 石城县| 成都市| 香河县| 元氏县| 白城市| 和平县| 尚志市| 西乡县| 合水县| 丰原市| 元谋县| 灵台县| 镇安县| 河曲县| 南雄市| 浑源县| 财经|