登录
首页 >  文章 >  python教程

Python保留两位小数的三种方法

时间:2026-03-17 13:20:50 348浏览 收藏

在Python中精确控制小数位数看似简单,实则暗藏陷阱:round()虽简洁却受浮点精度和银行家舍入规则影响;f-string格式化(如f"{x:.2f}")是日常显示的首选,确保视觉上稳定两位小数;而金融计算等高精度场景必须依赖decimal模块避免误差;若需截断而非四舍五入,则需手动处理或调用decimal的ROUND_DOWN策略——掌握这些差异,才能在开发中既高效又可靠地应对各种数值精度需求。

python如何取小数点后2位

Python 中取小数点后 2 位,常用且推荐的方式是用 round() 函数或格式化输出,但要注意:round() 是四舍五入,且对浮点数精度有局限;如需精确控制(比如金融计算),应优先用 decimal 模块或字符串格式化。

用 round() 四舍五入(最简单)

适用于一般场景,代码简洁:

  • round(3.14159, 2)3.14
  • round(2.675, 2)2.67(注意:这不是“错误”,而是浮点数二进制表示导致的“银行家舍入”行为,实际是向偶数舍入)

用格式化转成字符串(保留两位、不四舍五入?不行,它仍是四舍五入)

以下方式输出为字符串,视觉上固定两位小数,本质仍是四舍五入:

  • f"{3.14159:.2f}""3.14"
  • "%.2f" % 3.14159"3.14"
  • format(3.14159, ".2f")"3.14"

需要截断(非四舍五入)?手动处理

比如 3.149 要变成 3.14(直接砍掉第三位以后):

  • int(x * 100) / 1003.14(仅适用于正数)
  • 更稳妥写法:math.floor(x * 100) / 100(正负都适用,需 import math
  • 或者用 decimal 精确控制:Decimal(str(x)).quantize(Decimal('0.01'), rounding=ROUND_DOWN)

金融/高精度场景:用 decimal 模块

避免浮点误差,适合金额等关键计算:

  • from decimal import Decimal, ROUND_HALF_UP
  • Decimal('3.14159').quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)Decimal('3.14')
  • 注意:输入尽量用字符串(如 '3.14159'),避免 Decimal(3.14159) 先引入浮点误差

基本上就这些。日常显示用 f"{x:.2f}" 最方便;要严格数值精度,选 decimal;要截断而非四舍五入,得自己算。不复杂但容易忽略细节。

到这里,我们也就讲完了《Python保留两位小数的三种方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于java,php,编程的知识点!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>