【发布时间】:2019-01-02 21:48:55
【问题描述】:
如果我有一个 Python Decimal,我怎样才能可靠地获得数字的精确十进制字符串(即不是科学记数法)表示,而没有尾随零?
例如,如果我有:
>>> d = Decimal('1e-14')
我想要:
>>> get_decimal_string(d)
'0.00000000000001'
但是:
-
Decimal类没有任何to_decimal_string方法,甚至没有任何to_radix_string(radix)(参见:https://docs.python.org/3/library/decimal.html#decimal.Context.to_eng_string) -
%f格式化程序默认舍入到小数点后 6 位 -'%f' %(d, ) ==> '0.000000'- 或需要精确的小数位数。 -
{:f}.format(...)格式化程序似乎可以工作 -'{:f}'.format(d) ==> '0.00000000000001'- 然而我不愿意相信它,因为这实际上与 the documentation 背道而驰,它说“'f'... 将数字显示为定点数。默认精度为 6” -
Decimal.__repr__和Decimal.__str__有时会返回科学计数法:repr(d) ==> "Decimal('1E-14')"
那么,有没有办法从 Python Decimal 获取十进制字符串?还是我需要使用Decimal.as_tuple() 自己推出?
【问题讨论】: