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

带不同小费金额的小费计算器:无法保留两位小数问题

小费计算器格式化问题修复

你的代码主要问题出在小费金额的格式化输出上,另外还有几处可以优化的地方:

问题分析

  • 错误的格式化写法:你用{'ten.2f'}这种方式,本质是创建了一个包含字符串的集合,根本没有对变量ten进行保留两位小数的格式化。
  • 冗余的类型转换:bill_amount已经是浮点型,计算小费的结果自然也是浮点型,不需要再用float()包裹。
  • 未使用的变量:tip_option定义后没用到,如果你想让用户选择查看对应比例的小费,可以补充逻辑。

基础修正版代码

先解决格式化问题,让小费金额正确保留两位小数:

bill_amount = float(input('How much is the bill? $'))
# 简化计算方式,直接乘以百分比系数
ten = bill_amount * 0.1
fifteen = bill_amount * 0.15
twenty = bill_amount * 0.2

# 使用f-string格式化,保留两位小数
print(f'10% Tip amount is {ten:.2f}')
print(f'15% Tip amount is {fifteen:.2f}')
print(f'20% Tip amount is {twenty:.2f}')

进阶优化版(支持用户选择)

如果要用到tip_option,让用户选择查看对应比例的小费,可以这样写:

bill_amount = float(input('How much is the bill? $'))
tip_rates = {
    '10': bill_amount * 0.1,
    '15': bill_amount * 0.15,
    '20': bill_amount * 0.2
}

tip_option = input('Tip Options (10/15/20): ')
if tip_option in tip_rates:
    print(f'{tip_option}% Tip amount is {tip_rates[tip_option]:.2f}')
else:
    print('Invalid tip option! Please choose 10, 15, or 20.')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:05:20