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

Python如何截断保留两位小数(无需第三方库)

不依赖第三方库在Python中截断保留小数点后两位

以下是几种无需第三方库实现截断保留两位小数的方法,均能将68.82809999...处理为68.82:

方法1:整数运算截断

利用乘法取整再除法的方式,直接截断小数部分:

num = 68.82809999
truncated = int(num * 100) / 100
print(truncated)  # 输出 68.82

注意:部分浮点数因二进制表示精度问题,可能出现num * 100结果略小于预期整数的情况(比如0.29 * 100可能得到28.999999999999996),此时可以添加一个极小值修正:

truncated = int(num * 100 + 1e-8) / 100

方法2:字符串分割处理

通过字符串解析拆分整数和小数部分,仅保留前两位小数后重新拼接:

def truncate_two_decimals(num):
    num_str = str(num)
    if '.' in num_str:
        int_part, dec_part = num_str.split('.', 1)
        # 小数部分不足两位时补0(可选,根据需求调整)
        truncated_dec = dec_part[:2].ljust(2, '0') if len(dec_part) < 2 else dec_part[:2]
        return float(f"{int_part}.{truncated_dec}")
    return float(num)

print(truncate_two_decimals(68.82809999))  # 输出 68.82

限制:若输入数值以科学计数法表示(如1e-5),此方法需要额外处理格式转换。

方法3:标准库math模块处理(区分正负)

针对正负数值分别使用floor和ceil实现精准截断:

import math

def truncate_two_decimals(num):
    scaled = num * 100
    if num >= 0:
        return math.floor(scaled) / 100
    else:
        return math.ceil(scaled) / 100

print(truncate_two_decimals(68.82809999))  # 输出 68.82

这个方法能避免浮点数精度问题,同时正确处理负数的截断(比如-68.828会被截断为-68.82而非-68.83)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:47:20