Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python十进制到字符串_Python_String_Decimal - Fatal编程技术网

Python十进制到字符串

Python十进制到字符串,python,string,decimal,Python,String,Decimal,这里有很多主题解释如何将字符串转换为十进制,但是如何将十进制转换回字符串呢 如果我这样做了: import decimal dec = decimal.Decimal('10.0') 我将如何取出dec并取出'10.0'(一个字符串)?使用,其中: 返回一个字符串,该字符串包含对象的可打印表示形式 例如: 几乎所有的内置函数都在Decimal类上工作,正如您所期望的: >>> import decimal >>> dec=decimal.Decimal('1

这里有很多主题解释如何将字符串转换为十进制,但是如何将十进制转换回字符串呢

如果我这样做了:

import decimal
dec = decimal.Decimal('10.0')
我将如何取出
dec
并取出
'10.0'
(一个字符串)?

使用,其中:

返回一个字符串,该字符串包含对象的可打印表示形式

例如:


几乎所有的内置函数都在Decimal类上工作,正如您所期望的:

>>> import decimal
>>> dec=decimal.Decimal('10.0')
字符串:

>>> str(dec)
'10.0'
浮动:

>>> float(dec)
10.0
整数:

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

有理数:

>>> import fractions
>>> fractions.Fraction(decimal.Decimal('0.50'))
Fraction(1, 2)

使用字符串格式函数:

>>> from decimal import Decimal
>>> d = Decimal("0.0000000000000123123")
>>> s = '{0:f}'.format(d)
>>> print(s)
0.0000000000000123123
如果您只是将数字强制转换为字符串,则对指数无效:

>>> str(d)
'1.23123E-14' 

请注意,使用
%f
字符串格式可能会先转换为浮点(或仅输出有限的小数位数),从而降低精度。您应该使用
%s
str()
来显示存储在十进制中的完整值

鉴于:

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

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

+1需要注意的是,
str()
在Python中几乎可以处理任何东西。@Greg,这就是它应该采用的方式:)因为大多数类型都实现了str方法,这在某种程度上是正确的,对于像
0.0000000000000 123123
这样的十进制字符串将失败,并将打印
1.23123E-14
@马修使用字符串格式函数(SaikiranYerram)进行了正确的回答(@),这取决于您是否认为这是一个合理的数字表示。不清楚OP中的用例是什么,但事实上,如果用户不想要这种符号,字符串格式方法将产生更好的结果。在发布类似问题之前,请查阅API文档。简单地启动python并尝试一下,您也会得到很好的结果。您正确地认为应该避免基于
%f
的格式设置,但我看不到任何建议这种方法的答案。请注意,
format(foo,'f')
“{0:f}”。format(foo)
不会将
foo
转换为
float
或失去精度。我看不出输出中的E表示法有任何错误。@eraoul两者都有效,取决于用例(例如,您可能需要将值发送到外部API,该API不接受E表示法中的值). 如果只是为了打印/记录,那么我想这是一个偏好的问题。
>>> str(d)
'1.23123E-14' 
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