You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按指定位置截取小数?示例:3.14373873→3.14

Python 截取小数到指定位数的方法

在Python里要把小数截取到指定位数,有几种实用的方法,根据你的需求选就行:

  • 使用round()函数快速四舍五入
    这是最常用的方法,直接传入数值和要保留的小数位数:
num = 3.14373873
rounded_num = round(num, 2)
print(rounded_num)  # 输出 3.14

注意:round()遵循“银行家舍入法”(四舍六入五成双),如果遇到末尾是5的情况,会取最近的偶数,比如round(3.145, 2)可能得到3.14而非3.15,这是浮点数精度的特性。

  • 字符串格式化(适合输出或精确控制显示)
    如果需要直接得到格式化后的字符串,或者明确的四舍五入结果,用f-string或format()函数:
num = 3.14373873
# f-string方式
formatted_str = f"{num:.2f}"
print(formatted_str)  # 输出 "3.14"
# 转成数值类型
formatted_num = float(formatted_str)

# format函数方式
formatted_str2 = format(num, ".2f")

这种方法的四舍五入逻辑更符合日常认知,适合需要输出固定位数小数的场景。

  • 数学运算直接截断(不四舍五入)
    如果不需要四舍五入,只想直接截断到指定位数,可以通过乘10的n次方取整再除以10的n次方:
num = 3.14373873
truncated_num = int(num * 100) / 100
print(truncated_num)  # 输出 3.14

注意:浮点数本身的精度问题可能导致意外结果,比如int(3.149999999999 * 100)可能得到314而非315,对精度要求高的话不建议用这个方法。

  • decimal模块(高精度场景首选)
    如果涉及金融、高精度计算,推荐用decimal模块,它可以精确控制舍入规则:
from decimal import Decimal, ROUND_DOWN, ROUND_HALF_UP

num = Decimal('3.14373873')
# 直接截断到两位小数
truncated_result = num.quantize(Decimal('0.00'), rounding=ROUND_DOWN)
print(truncated_result)  # 输出 Decimal('3.14')

# 四舍五入到两位小数
rounded_result = num.quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
print(rounded_result)  # 输出 Decimal('3.14')

# 转成float类型(如果需要)
float(truncated_result)

这个方法完全避免了浮点数精度误差,舍入规则也可以灵活配置。

内容的提问来源于stack exchange,提问作者Tan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:37:51