Postgresql数字类型在python中显示

时间:2016-04-26 12:10:26

标签: python postgresql

我有一个postgresql表,其列定义为:numeric(20,7) 如果我插入值0,则会将其保存为:0.0000000

当我将此值分配给Python(2.7)时,它向我显示0E-7这是正确的但是格式错误。

为什么会这样显示?我该如何解决?

2 个答案:

答案 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"