48

这里有很多主题解释了如何将字符串转换为小数,但是如何将小数转换回字符串?

就像我这样做:

import decimal
dec = decimal.Decimal('10.0')

我将如何取出dec'10.0'字符串)?

4

5 回答 5

71

使用内置str(),它:

返回一个字符串,其中包含一个对象的可很好打印的表示形式。

例如:

>>> import decimal
>>> dec = decimal.Decimal('10.0')
>>> str(dec)
'10.0'
于 2012-06-19T00:51:32.700 回答
39

使用字符串格式化函数:

>>> from decimal import Decimal
>>> d = Decimal("0.0000000000000123123")
>>> s = '{0:f}'.format(d)
>>> print(s)
0.0000000000000123123

如果您只是将数字转换为字符串,则它不适用于指数:

>>> str(d)
'1.23123E-14' 
于 2014-11-21T03:41:55.487 回答
6

请注意,使用%f字符串格式似乎要么首先转换为浮点数(或仅输出有限的小数位数),因此会降低精度。您应该使用%sstr()显示存储在十进制中的完整值。

鉴于:

from decimal import Decimal
foo = Decimal("23380.06198573179271708683473")
print("{0:f}".format(foo))
print("%s" % foo)
print("%f" % foo)

输出:

23380.06198573179271708683473
23380.06198573179271708683473
23380.061986

(编辑:更新以反映@Mark 的评论。)

于 2018-10-24T22:02:37.363 回答
4
import decimal
dec = decimal.Decimal('10.0')
string_dec = str(dec)
于 2012-06-19T00:51:45.860 回答
4

正如您所期望的,几乎所有内置函数都适用于 Decimal 类:

>>> import decimal
>>> dec=decimal.Decimal('10.0')

一个字符串:

>>> str(dec)
'10.0'

一个浮子:

>>> float(dec)
10.0

一个整数:

>>> int(dec)
10

对象表示(就像在交互式解释器中一样):

>>> repr(dec)
"Decimal('10.0')"

有理数:

>>> import fractions
>>> fractions.Fraction(decimal.Decimal('0.50'))
Fraction(1, 2)
于 2012-06-19T01:44:48.583 回答