如何不进行四舍五入将浮点数保留两位小数?
如何不四舍五入截断浮点数到指定小数位
不需要必须转字符串再转回浮点数,有几种更简便的方法:
- 数学运算截断法
通过缩放后取整再还原的方式实现,比如要保留2位小数:
num = 8.225 truncated_num = int(num * 100) / 100 print(truncated_num) # 输出 8.22
注意:由于浮点数的二进制存储特性,像8.225这类数实际在计算机中可能是近似值(比如8.224999999999999),这种情况下该方法依然能得到正确的截断结果。
- 使用decimal模块精确截断
如果需要避免浮点数精度问题,推荐用decimal模块,它支持精确的十进制运算和指定截断模式:
from decimal import Decimal, ROUND_DOWN num = Decimal('8.225') truncated_num = num.quantize(Decimal('0.00'), rounding=ROUND_DOWN) print(truncated_num) # 输出 8.22
这种方法适合对精度要求高的场景,能完全避免浮点数存储带来的误差。
- 字符串格式化(仅用于显示)
如果只是需要输出显示截断后的结果,直接用字符串切片处理即可,无需转回浮点数:
num = 8.225 num_str = str(num) if '.' in num_str: integer_part, decimal_part = num_str.split('.') truncated_str = f"{integer_part}.{decimal_part[:2]}" else: truncated_str = num_str print(truncated_str) # 输出 8.22
内容的提问来源于stack exchange,提问作者Surabhi Dey
相关产品推荐
相关产品推荐

