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

使用round方法保留两位小数的Python小费计算器问题求助

问题分析

你遇到的核心问题是:round() 函数负责对数值进行四舍五入处理,但它返回的是浮点数类型。当数值的小数部分末尾为0时(比如33.60),Python打印浮点数会自动省略末尾的0,所以你看到的是33.6而非目标的33.60。你需要的不是修改数值本身,而是格式化输出的字符串形式,强制保留两位小数。

解决方案

直接修改最后一行的打印语句即可,以下是几种可行的方法:

方法1:使用f-string格式化(Python 3.6+推荐)

把原代码的最后两行替换成:

# 格式化时会自动处理四舍五入,甚至可以省略round步骤
print(f"每人应付: {split_cost:.2f}")

.2f 表示将浮点数格式化为保留两位小数的字符串,即使末尾是0也会强制显示。

方法2:使用str.format()方法

如果使用Python 3.6之前的版本,可采用这种方式:

print("每人应付: {:.2f}".format(split_cost))

方法3:结合round与格式化(可选)

如果你仍想先对数值做四舍五入再格式化,也可以保留round步骤:

final_amount = round(split_cost, 2)
print(f"{final_amount:.2f}")

不过实际上格式化逻辑本身已包含四舍五入处理,所以round步骤可以省略。

优化后的完整代码
print("Welcome to the tip calculator.")
total_bill = input("What was the total bill? ")
tip = input("What percentage tip would you like to give? 10, 12, or 15? ")
people = input("How many people to split the bill? ")

# 简化计算逻辑
tip_percent = int(tip) / 100
split_cost = float(total_bill) * (1 + tip_percent) / int(people)

# 格式化输出两位小数
print(f"每人应付: {split_cost:.2f}")

运行后输入150、12、5,会输出每人应付: 33.60,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:43:23