我有想要的数字:
1.215145156155 => 1.2
1.368161685161 => 1.35
1.578414616868 => 1.6
Run Code Online (Sandbox Code Playgroud)
(*注意:如果为零,则不应标记百分位.)
什么是最快的做到这一点呢?
这就是我现在所拥有的,而且速度不够快:
def rounder(v):
v = str(round(float(v),2))
if len(v) == 3: v = v + str(0)
d0 = int(v[0])#ones
d1 = int(v[2])#tenths
d2 = int(v[3])#hundredths
if d2 <= 4:
return str(d0)+'.'+str(d1)
elif 4 < d2 < 7:
return str(d0)+'.'+str(d1)+str(5)
elif d2 >= 7:
if d1 != 9:
return str(d0)+'.'+str(d1+1)
if d1 == 9:
return str(d0+1)+'.'+str(0)
Run Code Online (Sandbox Code Playgroud)
Mar*_*tos 11
缩放,圆形,不规模.
round(20*v)/20
Run Code Online (Sandbox Code Playgroud)
我应警告你,这种行为可能会让你大吃一惊:
>>> round(20*1.368161685161)/20
1.3500000000000001
Run Code Online (Sandbox Code Playgroud)
舍入工作正常,但IEEE编号不能完全代表1.35.Python 2.7对此更加智能,并且1.35在打印数字时将选择最简单的表示形式.2.7及更早版本中的实际存储值相同.
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |