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

Python 2.7.9中如何比较AWS账单提取的字符串小数数值

解决字符串小数数值比较的问题

我一眼就瞅出你代码里的问题了——你把top_answer = 0放在了for循环的内部!这就导致每处理一行新内容时,top_answer都会被重置回0,之前找到的最大值根本留不住,每次比较都是拿当前的小数和0比,自然没法正确追踪到所有数值里的最大值。

另外,你提取的字符串里可能带空格(比如示例里的' 1.46'),虽然Decimal()能自动忽略前后空格,但最好还是显式用strip()处理一下,避免潜在的格式问题。

修正后的代码示例

from decimal import *

# 把最大值的初始化移到循环外面,确保不会被重置
top_answer = Decimal('0')  # 若可能出现负数,用Decimal('-Infinity')更稳妥
for line in output.split('\n'):
    if "Maximum" in line:
        # 提取数值字符串并去除前后空白
        ext = line.strip()[10:-1].strip()
        ans = Decimal(ext)
        print(f"当前提取值: {ext}, 当前最大值: {top_answer}")
        if ans > top_answer:
            top_answer = ans
        print(f"更新后最大值: {top_answer}")

额外优化建议

如果你的账单报告里可能出现负数(虽然Maximum对应的数值大概率是正数),把top_answer的初始值设为Decimal('-Infinity')会更严谨——这样哪怕所有提取的数值都是负数,也能正确找到最大的那个(最接近0的负数)。

比如改成:

top_answer = Decimal('-Infinity')

这样运行下来,就能正确追踪并比较所有从账单里提取的小数数值,找到最大的那个啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:00:07