我有一个postgresql表,其列定义为:numeric(20,7)
如果我插入值0
,则会将其保存为:0.0000000
当我将此值分配给Python(2.7)时,它向我显示0E-7
这是正确的但是格式错误。
为什么会这样显示?我该如何解决?
答案 0 :(得分:2)
如果要控制浮点数的格式化方式,可以尝试:
"{0:.2f}".format(n) # n is value read from db
答案 1 :(得分:2)
您可以简单地将Decimal
格式化为:
"{:f}".format(Decimal("0E-7"))
Decimal
支持advanced string formatting:
# PEP 3101 support. the _localeconv keyword argument should be
# considered private: it's provided for ease of testing only.
def __format__(self, specifier, context=None, _localeconv=None):
"""Format a Decimal instance according to the given specifier.
The specifier should be a standard format specifier, with the
form described in PEP 3101. Formatting types 'e', 'E', 'f',
'F', 'g', 'G', 'n' and '%' are supported. If the formatting
type is omitted it defaults to 'g' or 'G', depending on the
value of context.capitals.
"""
默认情况下,它似乎使用Decimal
本身的精度:
>>> '{:f}'.format(Decimal('0E-7'))
'0.0000000'
>>> '{:f}'.format(Decimal('0E-8'))
'0.00000000'
>>> '{:f}'.format(Decimal('0E-9'))
'0.000000000'
另一方面,如果您想使用自定义精度,请将其传递给格式字符串:
>>> print("{:.2f}".format(Decimal("0E-7")))
0.00
有关格式中不同字母的含义的说明,请参阅"Format Specification Mini-Language"。