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

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

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

引言

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

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

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

舉個直觀例子:計算10/3得到3.3333333333333335,但我們需要:

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

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

二、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. 適合 “快速粗略保留”,不適合金融、金額等高精度場景;
  • 適用場景:簡單的日常計算、非高精度的結(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位,自動補(bǔ)0
print("補(bǔ)零示例:%.2f" % 1.5)  # 輸出:1.50

核心解析

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

方法 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ù)字才能計算;
  • 適用場景:復(fù)雜的結(jié)果展示(如帶單位、千分位)、報表生成。

方法 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é)合變量(動態(tài)指定保留位數(shù))
n = 2
print(f"動態(tài)保留{n}位:{num:.{n}f}")  # 輸出:3.33

核心解析

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

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

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

代碼示例

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ù)雜;
  • 適用場景:金融計算、金額結(jié)算、稅 務(wù)計算(高精度要求)。

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

如果處理的是 numpy 數(shù)組(數(shù)據(jù)分析、機(jī)器學(xué)習(xí)常用),用numpy.round()更高效,支持對整個數(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       ]

# 對整個數(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è)計,批量處理效率高;
  • 缺點(diǎn):需要安裝 numpy 庫(pip install numpy);
  • 適用場景:數(shù)據(jù)分析、機(jī)器學(xué)習(xí)(處理大量數(shù)值數(shù)組)。

三、新手必避坑指南(重點(diǎn)!)

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

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

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

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

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

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

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

res = "%.2f" % 10/3  # 錯誤:字符串不能直接除法
# 正確做法:轉(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ù),簡潔精度問題、四舍五入坑簡單計算、非高精度展示
% 占位符自動補(bǔ)零,適合展示返回字符串終端輸出、簡單報表
format()靈活,支持多格式返回字符串復(fù)雜展示(千分位、對齊)
f-string最簡潔,支持動態(tài)位數(shù)Python3.6+、返回字符串Python3.6 + 的日常展示(首選)
decimal 模塊高精度,無精度丟失語法稍復(fù)雜金融、金額、高精度計算
numpy.round批量處理數(shù)組高效需安裝 numpy數(shù)據(jù)分析、機(jī)器學(xué)習(xí)(數(shù)組處理)

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

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

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

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

相關(guān)文章

最新評論

河西区| 阜宁县| 海阳市| 宁化县| 荥经县| 安福县| 从化市| 保康县| 邹城市| 云霄县| 乌海市| 精河县| 县级市| 南昌市| 浪卡子县| 汤原县| 周口市| 娄烦县| 尉犁县| 成武县| 延长县| 孝感市| 岳普湖县| 江达县| 庆云县| 雅安市| 鄄城县| 丰都县| 桓仁| 新建县| 洞头县| 津市市| 北流市| 临武县| 弋阳县| 荃湾区| 永胜县| 泰安市| 莫力| 枣庄市| 新乐市|