准备在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为基数表示的数字”的定义中使用了“十进制”一词,而不是“表示中有小数点的数字”或“Pythondecimal.decimal
类的实例”。与显示为十六进制的%x
格式说明符进行比较。