Python如何截断浮点数至指定小数位(不四舍五入)
Python实现浮点数保留两位小数且不四舍五入的方法
当然有办法实现,下面是几种实用方案:
方法一:数学运算截断
通过乘以100后取整,再除以100实现截断,适合正数场景:
n = 3.145678 result = int(n * 100) / 100 print(result) # 输出 3.14
注意:如果浮点数存在精度误差(比如0.29实际存储为0.28999999999999998),直接用int()可能会得到不符合预期的结果,这时可以结合math.floor(仅针对正数):
import math n = 0.29 result = math.floor(n * 100) / 100 print(result) # 输出 0.29
方法二:字符串处理
把浮点数转为字符串后截取小数部分前两位,逻辑直观:
n = 3.145678 s = str(n) if '.' in s: int_part, dec_part = s.split('.') # 若小数部分不足两位,补零;超过两位则截取前两位 formatted = f"{int_part}.{dec_part[:2].ljust(2, '0')}" else: formatted = f"{s}.00" result = float(formatted) print(result) # 输出 3.14
方法三:Decimal模块设置截断模式
之前用Decimal出现四舍五入是因为默认的舍入模式,设置ROUND_DOWN即可实现截断:
from decimal import Decimal, ROUND_DOWN # 注意传入字符串而非浮点数,避免精度丢失 n = Decimal('3.145678') result = n.quantize(Decimal('0.00'), rounding=ROUND_DOWN) print(result) # 输出 3.14
内容的提问来源于stack exchange,提问作者Lucky Vishwakarma
相关产品推荐
相关产品推荐

