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

Python中如何让浮点数保留两位小数输出满足价格场景断言要求

Counter类需求实现方案

现存问题

当前代码存在3个和需求不符的点:

  1. get_total方法未实现注释标注的「四舍五入保留两位小数」逻辑,直接返回了原始计算值
  2. status方法拼接字符串时,没有对总金额做强制两位小数的格式化处理,导致9.0仅显示为9.0
  3. status方法仅打印了结果字符串,没有return返回值,断言调用时会直接取到None,无法通过校验

修改后的完整代码

class Counter:
     id : str   
     _items: dict

     def __init__(self, ID: str):
          '''创建一个指定ID的新计数器'''
          self.id = ID 
          self._items={}
          # 字典结构为dict[str, list[int, float]]
  
     def add(self, item_name: str, amount: int, price_of_unit: float)-> None:
          '''添加指定数量的对应名称商品,传入商品单价,可假定同一商品名的每次添加单价一致'''
          if item_name not in self._items:
            self._items[item_name]=[amount,price_of_unit]
          else:
            self._items[item_name][0]=self._items[item_name][0]+amount
    
     def remove(self, item_name: str, amount: int)->None:
          '''移除指定数量的对应名称商品''' 
          self._items[item_name][0]=self._items[item_name][0]-amount

     def reset(self):
          '''清空此前添加的所有商品记录'''
          self._items={}

     def get_total(self)-> float:
          '''返回总金额,四舍五入保留小数点后两位'''
          total_sum=0.0
          for x in self._items:            
            total_sum += self._items[x][0]*self._items[x][1]
          # 新增四舍五入逻辑
          return round(total_sum, 2)
    
     def status(self)-> str:   
       '''返回格式为「Id N M」的字符串,其中Id是计数器ID,N是所有商品总数量,M是总价格保留两位小数且强制显示两位小数'''
       total_items=0
       for x in self._items: 
        total_items += self._items[x][0]
       # 修改格式化规则,强制两位小数,且返回字符串而非仅打印
       my_string = f"{self.id} {total_items} {self.get_total():.2f}"
       return my_string

关键修改说明

  • 浮点数格式化符:.2f会强制保留两位小数,即使小数位为0也会补0,完全匹配价格字段的显示要求
  • 给get_total方法新增round(total_sum,2)逻辑,符合注释标注的四舍五入要求
  • 调整status方法逻辑,改为直接返回格式化后的字符串(如果需要打印可在调用status后自行打印),满足断言的取值要求

效果验证

执行测试用例:

mycounter = Counter("C001")
mycounter.add("Spaghetti", 5, 1.8)
# 输出 C001 5 9.00
print(mycounter.status())
# 断言通过
assert mycounter.status()=="C001 5 9.00"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:07