如何在Python的for循环中将日薪格式化为两位小数?
如何将日薪格式化为两位小数显示?
你需要把输出中的Rate per Day: 400改成Rate per Day: 400.00,直接用float(rate)只会得到400.0,可以通过以下几种简单方法实现:
方法1:输出时直接格式化(推荐,不改动原始数据)
不需要修改数据存储逻辑,只在display函数的打印语句里,用f-string指定两位小数格式即可:
print(f"""Employee ID: {id} First name: {fname} Last name: {lname} Department: {dept} Rate per Day: {float(rate):.2f} """)
这里:.2f是格式化指令,意思是将数值格式化为保留两位小数的浮点数。
方法2:先转成浮点数存储,再格式化输出
如果希望数据列表里存的是数值类型,可以在存储时先把rate转成float,再在输出时指定格式:
- 修改数据存储部分:
all_data.append((int(id), fname, lname, dept, float(rate)))
- 然后修改
display里的打印行:
Rate per Day: {rate:.2f}
方法3:用Decimal模块处理(适合货币场景)
如果涉及货币计算,为了避免浮点数精度问题,可以使用decimal模块:
- 先导入模块:
from decimal import Decimal
- 存储时转换类型:
all_data.append((int(id), fname, lname, dept, Decimal(rate)))
- 输出时同样用
:.2f格式化:
Rate per Day: {rate:.2f}
完整修改后的代码示例(方法1)
empList="""201911007,James,Butt,Accounting,365; 201203008,Josephine,Darakjy,Marketing,4000""" all_data = [] for row in map(str.strip, empList.split(";")): if row == "": continue id, fname, lname, dept, rate = row.split(",") all_data.append((int(id), fname, lname, dept, rate)) def display(): for id, fname, lname, dept, rate in all_data: print(f"""Employee ID: {id} First name: {fname} Last name: {lname} Department: {dept} Rate per Day: {float(rate):.2f} """) display()
运行后输出:
Employee ID: 201911007 First name: James Last name: Butt Department: Accounting Rate per Day: 365.00 Employee ID: 201203008 First name: Josephine Last name: Darakjy Department: Marketing Rate per Day: 4000.00
内容的提问来源于stack exchange,提问作者Griffeminie
相关产品推荐
相关产品推荐

