page contents

Python 保留小数:6 种常用方法,新手秒会

日常写 Python 代码时,保留小数是高频需求 —— 比如电商系统显示订单金额(保留 2 位)、数据分析展示百分比(保留 1 位)、实验报告输出测量结果(保留 3 位)。很多新手只会用round()函数,却不知道它有 “坑”,也不清楚不同场景该选哪种方法。

attachments-2026-10-4ZiV1fbm6adabe15d5d8e.png

日常写 Python 代码时,保留小数是高频需求 —— 比如电商系统显示订单金额(保留 2 位)、数据分析展示百分比(保留 1 位)、实验报告输出测量结果(保留 3 位)。很多新手只会用round()函数,却不知道它有 “坑”,也不清楚不同场景该选哪种方法。

今天就给大家整理 6 种 Python 保留小数的常用方法,从基础到进阶,代码示例可直接复制运行,每个方法都讲清 “怎么用、适用场景、注意事项”,新手也能秒懂!

一、先看核心需求:保留小数要解决什么问题?

举个直观例子:计算10/3得到3.3333333333333335,但我们需要:

显示金额:3.33(保留 2 位);

显示百分比:3.3(保留 1 位);

金融计算:高精度的3.3333333333(避免精度丢失)。

不同场景对应不同方法,下面逐个拆解。 学习编程课程

二、6 种保留小数的方法(附代码 + 解析)

方法 1:round () 函数(最基础,内置函数)

round()是 Python 内置函数,语法简单:round(数字, 保留位数),核心是四舍五入,适合快速保留小数。

# 基础用法num = 10 / 3print(f"原始值:{num}")  # 输出:3.3333333333333335
# 保留2位小数print(f"保留2位:{round(num, 2)}")  # 输出:3.33# 保留1位小数print(f"保留1位:{round(num, 1)}")  # 输出:3.3# 不指定位数,默认保留0位(取整)print(f"保留0位:{round(num)}")     # 输出:3
# 特殊情况:四舍五入的“坑”(不是纯数学的四舍五入)print(round(2.675, 2))  # 预期2.68,实际输出2.67(浮点数精度问题)

核心解析

优点:内置函数,无需导入模块,代码最短;

缺点:

浮点数精度问题导致结果不符合预期(如2.675保留 2 位得到2.67);

适合 “快速粗略保留”,不适合金融、金额等高精度场景;

适用场景:简单的日常计算、非高精度的结果展示。

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

用%_.xf的格式(x 为保留位数),本质是格式化输出,不改变数字本身,适合 “展示结果”。

num = 10 / 3print(f"原始值:{num}")  # 3.3333333333333335
# 保留2位小数(%_.2f)print("保留2位:%.2f" % num)  # 输出:3.33# 保留3位小数(%_.3f)print("保留3位:%.3f" % num)  # 输出:3.333# 补零:比如1.5保留2位,自动补0print("补零示例:%.2f" % 1.5)  # 输出:1.50

优点:格式化输出,自动补零,适合打印 / 展示结果;

缺点:返回的是字符串,不是数字(无法继续计算);

适用场景:终端输出、日志记录、报表展示(只看结果,不计算)。

方法 3:format () 函数(推荐,灵活)

format()是 Python 官方推荐的格式化函数,语法:format(数字, '.xf'),比%占位符更灵活,支持更多格式。 

num = 10 / 3# 基础用法:保留2位print("保留2位:{}".format(format(num, '.2f')))  # 输出:3.33# 简写形式(更常用)print("保留2位(简写):{:.2f}".format(num))     # 输出:3.33# 保留1位+补零print("保留1位+补零:{:.1f}".format(1.5))        # 输出:1.5# 结合其他格式(比如加千分位)print("加千分位+保留2位:{:,.2f}".format(12345.6789))  # 输出:12,345.68

优点:灵活,支持补零、千分位、对齐等,返回字符串但格式可控;

缺点:返回字符串,需转数字才能计算;

适用场景:复杂的结果展示(如带单位、千分位)、报表生成。

方法 4:f-string (Python3.6+,最简洁)

f-string 是 Python3.6  新增的格式化方式,语法:f"{数字:.xf}",兼顾简洁和灵活,是日常开发的 “首选”。

num = 10 / 3# 保留2位小数print(f"保留2位:{num:.2f}")  # 输出:3.33# 保留3位小数print(f"保留3位:{num:.3f}")  # 输出:3.333# 保留1位+补零print(f"保留1位+补零:{1.5:.1f}")  # 输出:1.5# 结合变量(动态指定保留位数)n = 2print(f"动态保留{n}位:{num:.{n}f}")  # 输出:3.33

核心解析

优点:语法最简洁,支持动态指定保留位数,可读性最高;

缺点:返回字符串,Python3.6 以下版本不支持;

适用场景:Python3.6 + 的所有展示场景(日常开发首选)。

方法 5:decimal 模块(高精度,适合金融 / 金额)

前面的方法都有浮点数精度问题,而decimal模块专门解决 “高精度小数计算”,适合金融、金额等对精度要求高的场景。 学习编程课程

from decimal import Decimal, ROUND_HALF_UP
# 解决round(2.675, 2)的精度问题num = Decimal('2.675')  # 注意:用字符串初始化,避免浮点数精度丢失# 保留2位小数,四舍五入res = num.quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)print(f"高精度保留2位:{res}")  # 输出:2.68
# 对10/3进行高精度保留num2 = Decimal('10') / Decimal('3')res2 = num2.quantize(Decimal('0.0000'))  # 保留4位print(f"10/3保留4位:{res2}")  # 输出:3.3333

核心解析

优点:高精度,完全符合数学上的四舍五入,无精度丢失;

缺点:需要导入模块,语法稍复杂;

适用场景:金融计算、金额结算、税务计算(高精度要求)。

方法 6:numpy.round(大数据 / 数组场景)

如果处理的是 numpy 数组(数据分析、机器学习 常用),用numpy.round()更高效,支持对整个数组保留小数。

import numpy as np
# 生成numpy数组arr = np.array([10/3, 2.675, 1.5])print(f"原始数组:{arr}")  # 输出:[3.33333333 2.675      1.5       ]
# 对整个数组保留2位小数arr_round = np.round(arr, 2)print(f"保留2位后的数组:{arr_round}")  # 输出:[3.33 2.68 1.5 ]

核心解析

优点:专为 numpy 数组设计,批量处理效率高;

缺点:需要安装 numpy 库(pip install numpy);

适用场景:数据分析、机器学习(处理大量数值数组)。

三、新手必避坑指南(重点!)

坑 1:浮点数本身的精度问题

# 看似2.675,实际存储的是近似值print(2.675)  # 输出:2.6749999999999998

这就是round(2.675, 2)得到2.67的原因 —— 浮点数在计算机中是二进制存储,部分十进制小数无法精确表示。 报名数学课程

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

Python 的round()不是纯数学的四舍五入,而是 “四舍六入五成双”(银行家舍入):

当保留位后一位是 5,且后面无数字时,保留位为偶数则舍去,奇数则进 1;

示例:round(1.5)=2,round(2.5)=2(5 后面无数字,保留位 0 是偶数,舍去)。

坑 3:字符串格式返回的是字符串,不是数字

res = "%.2f" % 10/3  # 错误:字符串不能直接除法# 正确做法:转成浮点数res = float("%.2f" % (10/3))print(res + 1)  # 输出:4.33

四、总结(新手速记)

日常展示(Python3.6+):优先用f-string({num:.2f}),简洁又灵活;

高精度计算(金融 / 金额):用decimal模块,避免精度丢失;

numpy 数组处理:用numpy.round();

简单粗略保留:用round(),但注意它的四舍五入规则;

所有字符串格式方法:如需计算,记得用float()转成数字。

建议大家把文中的代码逐个运行一遍,改改保留位数、换几个数字,就能快速掌握不同方法的差异。保留小数看似简单,选对方法能避免很多隐藏问题,尤其是金融场景,千万别只用round()哦! 

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

 

  • 发表于 2026-10-23 09:54
  • 阅读 ( 26 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2541 篇文章

作家榜 »

  1. Pack 2541 文章
  2. 轩辕小不懂 2403 文章
  3. 小柒 2228 文章
  4. Nen 576 文章
  5. 王昭君 216 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章