今日份代码&解决办法(扩充)

这问题是否该总结为浮点的危害性?

题目

输出指定内容:

A的工作效率为0.05
B的工作效率为0.04
A比B的工作效率高20%

实例

代码如下:

# 一项工程,A做要10天,B做25天,A比B的工作效率高多少?
a='A的工作效率为'
b=1/20
c='B的工作效率为'
d=1/25
e='A比B的工作效率高'
f=(b-d)/b*100
print(a+str(b))
print(c+str(d))
print(e+str(f)+'%')

输出后却显示

A的工作效率为0.05
B的工作效率为0.04
A比B的工作效率高20.000000000000004%

解析

问题在工作效率后多出的小数点,与客户(老师)的要求不同 。经过在某G开头搜索引擎上浏览后,找到初步解决方法(可能不是最好的,dalao可以在评论区给出方法)

暂时性解决办法(已弃用)

代码如下:

# 一项工程,A做要10天,B做25天,A比B的工作效率高多少?
a='A的工作效率为'
b=1/20
c='B的工作效率为'
d=1/25
e='A比B的工作效率高'
f=(b-d)/b*100
print(a+str(b))
print(c+str(d))
# 改动:在f前加上'%d'%
print(e+'%d'%f+'%')

输出效果:

A的工作效率为0.05
B的工作效率为0.04
A比B的工作效率高20%


再放送

2019.8.11 18 时 05 分:
感谢半叶子基安的回复 ,现又有两种新方法可解决该问题XD
第一种:

# 一项工程,A做要10天,B做25天,A比B的工作效率高多少?
a='A的工作效率为'
b=1/20
c='B的工作效率为'
d=1/25
e='A比B的工作效率高'
f=(b-d)/b*100
print(a+str(b))
print(c+str(d))
# 把str(f)改成str(int(f))
print(e+str(int(f))+'%')

第二种:

# 一项工程,A做要10天,B做25天,A比B的工作效率高多少?
a='A的工作效率为'
b=1/20
c='B的工作效率为'
d=1/25
e='A比B的工作效率高'
f=(b-d)/b*100
# 新增一行,将f转换为整数
f=int(f)
print(a+str(b))
print(c+str(d))
# 按原有代码print即可
print(e+str(f)+'%')

总结

print输出需要输出字符串(string),因此要把浮点数转换为整数(integer),再转换为字符串输出(string)

已弃用:在print命令中加入的%d是表示输出十进制整数的意思,因此这样能看到输出的是整数而不是小数(果然是眼不见为净啊)

参考资料

python基础_格式化输出(%用法和format用法)

添加新评论

已有 5 条评论

冬马的白色相簿 冬马的白色相簿     Windows 7 /    FireFox

(ฅ´ω`ฅ) 想知道这个文字上的遮罩是什么代码实现的(鼠标悬浮显示文字)

applexhy78 applexhy78 回复 @冬马的白色相簿     Android /    Google Chrome

详情可上网查询Markdown语法
~~(要划去的字)~~
就是在要划掉的文字前后加上两个~

冬马的白色相簿 冬马的白色相簿 回复 @applexhy78     Windows 7 /    FireFox

我知道,可是你的文字上有黑色的罩层,最重要的是这个 我~~也仅仅是删除的横线

applexhy78 applexhy78 回复 @冬马的白色相簿     Android /    Google Chrome

主题自带

冬马的白色相簿 冬马的白色相簿 回复 @applexhy78     Windows 7 /    FireFox