Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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中使用%d显示变量值_Python_Decimal - Fatal编程技术网

准备在Python中使用%d显示变量值

准备在Python中使用%d显示变量值,python,decimal,Python,Decimal,目标: 我正在尝试使用“%d”运算符在打印调用中以十进制形式显示(假定浮点)值 问题 import decimal prices = { "banana":4, "apple":2, "orange":1.5, "pear":3 } stock = { "banana":6, "apple":0, "orange":32, "pea

目标:

我正在尝试使用“%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])
文档说明“%d”只能采用十进制值。考虑到这一点,我导入了“decimal”模块,并尝试使用decimal函数进行转换。结果没有改变,我的代码将返回我的橙子的“最低”价格(我的橙子对此不满意)。我做错了什么

代码

 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

如果要打印浮点数,请使用
%f
说明符。例如,这将打印精度为2位小数的价格:

print "price: %.2f" % prices[x]
有关更多文档,请参见此处:

好吧,这是我的尝试

%d
说明符将数字转换为以10为基数的整数。所以当你做一些类似的事情时:

print "price: %d"%Decimal("1.5")
它将打印
价格:1

要实现所需,可以使用
%f
说明符:

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

请参阅有关格式的详细信息。希望这有帮助

感谢您的回答@Krzysztof Kosiński;在尝试破解之前,应该先检查Python提供了多少说明符类型。但是关于我的代码;我将我的值转换为十进制,为什么它不显示我的值的十进制版本?如果您查看Krzysztof Kosiński发布的文档链接,您可以看到“d”格式是有符号整数十进制格式。根据文档,如果任何带有小数点的内容都被视为浮点,那么您将如何表示“十进制”(带符号的整数十进制)?我问这个问题是因为“d”说明符希望这样,但很明显我的橙子价格是浮动的。@brooklynsweb:啊,我想我明白是什么让你困惑了。这里的“十进制”一词不是“十进制”而不是“整数”,而是“十进制”而不是“十六进制”,即以10为基数。
%d
在以10为基数指定了一个有符号整数。此处的文档在“以10为基数表示的数字”的定义中使用了“十进制”一词,而不是“表示中有小数点的数字”或“Python
decimal.decimal
类的实例”。与显示为十六进制的
%x
格式说明符进行比较。