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

如何使用f-string实现浮点数截断(向下取整)保留指定小数位

原因说明

f-string 自带的浮点数精度格式化默认走舍入逻辑,没有内置截断(向下取整)规则,所以直接用:.1f处理700.75时会输出舍入后的700.8,没法直接得到你要的截断结果。

实现方法

你只需要先把原始浮点数按目标精度做截断处理,再传入f-string格式化即可,完全不需要放弃f-string的使用:

  • 引入标准库math的floor方法实现向下取整
  • 按要保留的小数位数对数值做缩放:比如保留1位小数就乘以10,保留2位就乘以100
  • 对缩放后的值向下取整,再除以对应缩放倍数还原,就得到了截断后的数值
  • 把处理完的数值传入f-string做格式化即可

对应代码如下:

import math

quantity = 700.75
# 配置保留的小数位数
precision = 1
scale = 10 ** precision
truncated_val = math.floor(quantity * scale) / scale
# 继续使用f-string完成格式化
quantity = float(f'{truncated_val:.1f}')

运行后得到的quantity值就是预期的700.7,如果需要适配不同保留位数,只需要修改precision变量的值即可。

补充:如果你的使用场景里涉及负数,需要实现向零截断(比如-700.75保留1位得到-700.7,而非向下取整的-700.8),只需要把代码里的math.floor替换成math.trunc就行,其余逻辑不用改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:06:16