我想将浮点值(具有动态精度)转换为字符串 如果浮动值我 a = 10.00 而不是结果 '10 .00' 如果 a = 10.000 ,结果应 '10 .000'
我得到这样的结果
a = 10.00
str(a)
'10.0'
但我想要这样的结果。
a = 10.00
str(a)
'10.00'
有什么办法吗?
答案 0 :(得分:3)
如果您要保留有效数字,请使用decimal
模块。
>>> from decimal import Decimal
>>> num1 = Decimal('10.000')
>>> str(num1)
'10.000'
>>> num2 = Decimal('10.00')
>>> str(num2)
'10.00'
十进制模块支持十进制浮点运算。
>>> num1/5
Decimal('2.000')
>>> num1+22
Decimal('32.000')
答案 1 :(得分:1)
我得到a = 10.00,结果应该是'10 .00',如果a = 10.000,结果应该是'10 .000'
如果'a = 5.500比str(a)应该是'5.500'如果'a = 10.50而不是str(a)应该是'10 .50'如果'a = 1.050而不是str(a)应该是'1.050'
你要求的是不可能的。不是在Python中,也不是我所知道的任何其他编程语言。如果a
是常规浮点数,则10.0
与10.00
或10.000
相同。它们都存储相同并具有相同的精度。
>>> a = 5.500
>>> b = 5.5
>>> c = 5.500000000
>>> a == b == c
True
规避这一点的唯一方法,不是使用float
,而是使用其他类型,例如Decimal
,如另一个答案所示。
让我解释一下我允许用户从命令行输入输入的情况,例如用户输入10.00,我想要小数点后的0,当前金额变为10.0
根据您的上一条评论,您可以从文字输入中获取数字,即str
,因此使用decimal
应该没问题。但是,如果您只想将这些数字反馈回用户,您甚至不需要:只需打印用户最初输入的字符串。
请注意,我只接受来自用户输入的数字(我不想允许字符串输入
您可以获取字符串输入并将该输入转换为数字。问题解决了。
>>> s = raw_input("enter number ")
enter number 10.000
>>> f = float(s)
>>> s
'10.000'
>>> f
10.0
答案 2 :(得分:1)
# way 1
a = 10.00
s = '%.2f' % a
print s # 10.00
# way 2
a = 10.0
p = 2
s = '%.{0}f'.format(p) % a
print s # 10.00