Python 2.3:如何在对话后获得精确的浮点值?

时间:2016-03-25 07:27:41

标签: python-2.3

x="1,234.00"
y =x.replace(',','')
k = float(y)
print k

输出= 1234.0但我需要1234.00的值 请解决这个问题

1 个答案:

答案 0 :(得分:0)

1234.0和1234.00之间的价值没有差异。您不能在浮点数中保存更多或更少的非重要数字。 但是,您可以打印更多或更少(非)有效数字。在旧版本的python中,您可以使用%方法(documentation)。在Python 2.7及更高版本中,使用string format method。一个例子:

f = float('156.2')

# in Python 2.3
no_decimals = "%.0f" % f
print no_decimals  # "156" (no decimal numbers)

five_decimals = "%.5f" % f
print five_decimals  # "156.20000" (5 decimal numbers)

# in Python 2.7
no_decimals = "{:.0f}".format(f)
print no_decimals  # "156" (no decimal numbers)

five_decimals = "{:.5f}".format(f)
print five_decimals  # "156.20000" (5 decimal numbers)

如果由于某种原因无法访问打印值的代码,您可以创建自己的类,继承自float并提供您自己的__str__值。这可能会打破一些行为(它不应该,但它可以),所以要小心。这是一个例子:

class my_float(float):
    def __str__(self):
        return "%.2f" % self

f = my_float(1234.0)
print f  # "1234.00"

(我在Python 2.7上运行,我没有安装2.3;请考虑将Python升级到2.7或3.5; 2.3严重过时。)