摆脱python中的零[重复]
Posted
技术标签:
【中文标题】摆脱python中的零[重复]【英文标题】:Get rid of zeros in python [duplicate] 【发布时间】:2017-05-28 22:40:36 【问题描述】:我用 Python 写了一个非常简单的代码。
我需要以0.1
的步长打印1
和5
之间的所有数字(包括1
和5
)。整数应该没有后缀.0
,即输出应该是:
0
0.1
0.2
...
1
1.1
...
...
5
这是我的代码:
for i in range(0,51):
if i%10==0:
z=int(i/10)
print (z)
else:
print (i*0.1)
这是我的输出:
0
0.1
0.2
0.30000000000000004
0.4
0.5
0.6000000000000001
0.7000000000000001
0.8
0.9
1
1.1
1.2000000000000002
1.3
1.4000000000000001
1.5
1.6
1.7000000000000002
1.8
1.9000000000000001
2
2.1
2.2
2.3000000000000003
2.4000000000000004
2.5
2.6
2.7
2.8000000000000003
2.9000000000000004
3
3.1
3.2
3.3000000000000003
3.4000000000000004
3.5
3.6
3.7
3.8000000000000003
3.9000000000000004
4
4.1000000000000005
4.2
4.3
4.4
4.5
4.6000000000000005
4.7
4.800000000000001
4.9
5
我不需要所有这些零.000000001
。
【问题讨论】:
阅读floats
;然后为您的解决方案使用round()
或者使用decimal
模块
为什么投反对票?
【参考方案1】:
您可以像这样打印四舍五入到小数点后一位的浮点数:
d = 1.12343214
":.1f".format(d)
>> 1.1
第二行将 d 格式化为浮点数的字符串表示形式,在小数点后四舍五入(来自.1
)。
【讨论】:
【参考方案2】:你可以使用圆形或格式
for i in range(0,51):
if i%10==0:
z=int(i/10)
else:
z= (i*0.1)
print '%.1f' % round(z, 1)
print format(z, '.1f')
【讨论】:
请注意此代码在 python 3 中不起作用【参考方案3】:for i in range(0,51):
if i%10==0:
z=int(i/10)
print (z)
else:
print ("%.1f" % (i*0.1))
您可以使用%.1f
表示法。这将限制要打印的小数位数
输出
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
【讨论】:
【参考方案4】:将最后一行更改为:
print ( "%.1f" % (i*0.1) )
这将格式化您的数字,仅显示一位小数。
【讨论】:
【参考方案5】:for i in range(0,51):
if i%10==0:
z= round(i/10)
print (z)
else:
i = i * 0.1
print ("%.1f" % i)
输出:
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
3
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
5
【讨论】:
【参考方案6】:利用 Python 的字符串格式化功能,您可以将整个循环减少到一行:
for i in range(0, 51):
print(':.decif'.format(i*0.1, deci=min(1, i%10)))
输出:
0
0.1
0.2
...
0.8
0.9
1
1.1
1.2
...
1.8
1.9
2
2.1
2.2
...
4.8
4.9
5
说明
这给你0
为i
和1
的10 的倍数:
>>> i = 10
>>> min(1, i%10)
0
>>> i = 8
>>> min(1, i%10)
1
现在,您可以将其用于关键字参数deci
来确定输出中的小数位数:
>>> ':.decif'.format(1.99, deci=1)
'2.0'
>>> ':.decif'.format(1.99, deci=0)
'2'
【讨论】:
以上是关于摆脱python中的零[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用python如何摆脱从网站上抓取的文本中的尾随空格[重复]