【发布时间】:2014-07-27 00:07:28
【问题描述】:
我正在努力完成的事情
-12.345 -> -012.345
小数点左边可以是-999->999(根据我的具体需要)和n个小数位数
我想出了两种方法来做到这一点:
def pad(num, pad):
pad = pow(10,pad)
if num > 0:
return "%s" % str(num + pad)[1:]
else:
return "-%s" % str(num - pad)[2:]
def pad(num, pad):
import math
mag = 1 + int(math.log10(abs(num)))
sz = len(str(num))
return str(num).zfill(pad+sz-mag)
但这对于 python 来说似乎相当迟钝。我看到了一个以前的类似问题,但不喜欢这个答案...
>>> "%06.2f"%3.3
'003.30'
因为它假定您已经知道小数点在哪里以及您有多少个小数位。
这似乎是一种常见的情况,那么在 python 2.7 中是否存在更好/更清洁/单一的 fncall 方法来解决这个问题?
【问题讨论】:
-
我相信
str.format()是你想要的 -
stackoverflow.com/questions/17118071/… 看起来它适用于整数但不适用于浮点数,因为我的宽度会根据十进制数字的数量而变化,所以据我所知,我仍然需要计算数字我有十进制数字:\
-
@pyInTheSky:小数位数是什么意思?浮点数是近似值,你总是会反正四舍五入。例如,
-12.345也不是完全-12.345。format(-12.345, '.53f')>'-12.34500000000000063948846218409016728401184082031250000'. -
所以你想要左边的固定宽度为 3,右边的宽度可变?
-
@user2357112 是正确的
标签: python python-2.7