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

Python 3.11浮点数精准打印需求:截断保留指定位数而非四舍五入

Python 3.11 实现指定小数位数截断输出(非四舍五入)

需求说明

需打印数字10.235689并显示为10.23,要求:

  • 不引入新变量
  • 不修改原数值
  • 避免四舍五入得到10.24
  • 支持指定小数点后打印位数

实现方案

方法1:数学运算截断(适用于正数)

通过将原数放大指定倍数后取整,再缩小回原量级,实现纯截断效果:

# 保留2位小数
print((int(10.235689 * 100)) / 100)

# 保留3位小数(可指定位数)
print((int(10.235689 * 10**3)) / 10**3)

输出结果分别为10.23和10.235,完全符合要求,未修改原数值且无额外变量。

方法2:通用截断(支持正负数值)

若需处理负数,用math.trunc()实现向零取整,避免int()对负数的向下取整偏差:

import math

# 正数保留2位小数
print(math.trunc(10.235689 * 100) / 100)

# 负数保留2位小数
print(math.trunc(-10.235689 * 100) / 100)

输出结果分别为10.23和-10.23,截断逻辑统一适配正负场景。

方法3:字符串切片处理

直接通过字符串分割与切片实现截断,无需数学运算:

# 保留2位小数
print('.'.join([str(10.235689).split('.')[0], str(10.235689).split('.')[1][:2]]))

# 保留3位小数
print('.'.join([str(10.235689).split('.')[0], str(10.235689).split('.')[1][:3]]))

注:若原数为整数(无小数点),可添加兼容逻辑:

# 兼容整数与小数的通用写法
num_str = str(10.235689)
print('.'.join([s[:2] if i ==1 else s for i,s in enumerate(num_str.split('.'))]) if '.' in num_str else num_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:12