2

目标:

我正在尝试在使用“%d”运算符的打印调用中将(假定的浮点数)值显示为小数。

问题

文档指出 '%d' 只能采用小数的值。考虑到这一点,我导入了“十进制”模块并尝试使用十进制函数进行转换。结果没有改变,我的代码将返回我的橙子看起来像“底价”的价格(我的橙子对此不满意)。我究竟做错了什么?

代码

 import decimal

    prices = {
        "banana":4,
        "apple":2,
        "orange":1.5,
        "pear":3
        }

    stock = {
        "banana":6,
        "apple":0,
        "orange":32,
        "pear":15
        }

    for x in prices:
        print x
        print "price: %d" % (decimal.Decimal(prices[x]))

        for y in stock:
            if y == x:
                print "stock: %d" % (stock[y])

结果

orange
price: 1 // Need this to return the price (1.5)
stock: 32
pear
price: 3
stock: 15
banana
price: 4
stock: 6
apple
price: 2
stock: 0
4

2 回答 2

0

好吧,这是我的尝试。

说明%d符将数字转换为以 10 为底的整数。因此,当您执行以下操作时:

print "price: %d"%Decimal("1.5")

它会打印price:1.

要实现您想要的,您可以使用说明%f符:

print "price: %.2f"%Decimal("1.5")

在此处查看有关格式化的更多信息。希望这可以帮助!

于 2013-10-15T00:56:20.300 回答
0

If you want to print floating point numbers, use the %f specifier. For example, this will print the price with 2 decimal digits of precision:

print "price: %.2f" % prices[x]

See here for more documentation: http://docs.python.org/2/library/stdtypes.html#string-formatting

于 2013-10-15T00:26:14.113 回答