鱼C论坛

 找回密码
 立即注册
查看: 1280|回复: 4

请教一下大佬,第14讲课后动动手算年终奖这个。

[复制链接]
发表于 2021-10-15 02:11:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
"""年终奖发放"""
#引用数据库及函数
from decimal import *

#定义变量
profit = float(input("请输入今年的利润:"))

#定义函数

#主程序
if 0 < profit <= 100000:
    award = Decimal(profit * 0.1)
elif 100000 < profit <= 200000:
    award = 100000 * 0.1 + (profit - 100000) * 0.075
elif 200000 < profit <= 400000:
    award = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05
elif 400000 < profit <= 600000:
    award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03
elif 600000 < profit <= 1000000:
    award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015      
elif 1000000 < profit:
    award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01
else:
    award = 0
    print( "今年公司亏损,没有年终奖")
print("应该发放的奖金总数是:", award)
这是我的代码,还存在一些问题。
当利润为77777时,算出来的数是7777.70000000000072759576141834259033203125,请教下,要怎么才能让它正常呢?研究了一晚上没研究出来。

088fc3c97d5ad0e00bddedfb8cfbf20.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-15 05:57:44 From FishC Mobile | 显示全部楼层
保留小数点后面有效位数就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 08:24:22 | 显示全部楼层
本帖最后由 小甲鱼的铁粉 于 2021-10-15 08:25 编辑

数字在计算机中存储使用的是二进制,讲浮点型数字转化为二进制时,有可能会不精确,导致这个浮点数小数位会特别长
保留小数点后两位就可以了

  1. """年终奖发放"""
  2. #引用数据库及函数
  3. from decimal import *

  4. #定义变量
  5. profit = float(input("请输入今年的利润:"))

  6. #定义函数

  7. #主程序
  8. if 0 < profit <= 100000:
  9.     award = Decimal(profit * 0.1)
  10. elif 100000 < profit <= 200000:
  11.     award = 100000 * 0.1 + (profit - 100000) * 0.075
  12. elif 200000 < profit <= 400000:
  13.     award = 100000 * 0.1 + 100000 * 0.075 + (profit - 200000) * 0.05
  14. elif 400000 < profit <= 600000:
  15.     award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03
  16. elif 600000 < profit <= 1000000:
  17.     award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015      
  18. elif 1000000 < profit:
  19.     award = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01
  20. else:
  21.     award = 0
  22.     print( "今年公司亏损,没有年终奖")
  23. print("应该发放的奖金总数是:%.2f" % award)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 08:27:51 | 显示全部楼层
print("应该发放的奖金总数是:{:.2f}".format(award))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-15 09:32:10 | 显示全部楼层
为什么复杂化?
  1. def bonus(amount):
  2.     interest = {1000000: 0.01, 600000: 0.015, 400000: 0.03, 200000: 0.05, 100000: 0.075, 0: 0.1}
  3.     arr = []
  4.     for m in interest.keys():
  5.         if amount >= m and m:
  6.             bal = amount-m
  7.             arr.append(bal*interest[m])
  8.             amount = amount-bal
  9.         elif not m:
  10.             arr.append(amount*interest[0])
  11.     return round(sum(arr), 2)

  12. print(bonus(77777))
复制代码
  1. 7777.7
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 22:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表