在python
中,我尝试将数字格式化为带有前导零的固定长度字符串,这可以这样做:
'{:0>10}'.format('10.0040')
'00010.0040'
我有一个负数,想要表达否定,我会得到这个:
'{:0>10}'.format('-10.0040')
'00-10.0040'
如果我想将字符串格式化为:
'-0010.0040'
我怎么能这样做?
我可以做一个if / then,但想知道格式是否会处理这个问题。
答案 0 :(得分:5)
你的问题是你的“数字”被表示为一个字符串,所以python无法知道它是正面的还是负面的,因为它不知道它是一个数字。
>>> '{: 010.4f}'.format(10.0400)
' 0010.0400'
>>> '{: 010.4f}'.format(-10.0400)
'-0010.0400'
这填充0
并具有固定的精度。它将使用space
表示正数,-
表示负数。
您可以使用格式化令牌的sign
部分更改行为(例如+
为正号,或只填写额外的0
)
答案 1 :(得分:4)
我不知道如何使用#if (NETSTANDARD1_5 || NETSTANDARD1_6 || NETCOREAPP1_0)
#define NetCore
#endif
。我可以建议改用str.zfill
吗?
str.format
如果您在格式化之前可以转换为数字:
>>> '-10.0040'.zfill(10)
'-0010.0040'
>>> '10.0040'.zfill(10)
'00010.0040'
答案 2 :(得分:2)
如果您可以将字符串转换为浮点数,则可以执行以下操作:
>>> '{:0=10.4f}'.format(float('-10.0040'))
'-0010.0040'
>>> '{:0=10.4f}'.format(float('10.0040'))
'00010.0040'