2017-03-03 46 views
-3

我在codecademy上学习Python类,我应该在一对字典中打印每个项目,然后是他们的价格和库存量。这是我写的代码:为什么%d截取1.5但%s正确打印数字?


prices = { 
    "banana" : 4, 
    "apple" : 2, 
    "orange" : 1.5, 
    "pear" : 3, 
} 
stock = { 
    "banana" : 6, 
    "apple" : 0, 
    "orange" : 32, 
    "pear" : 15, 
} 

for fruit in prices: 
    print fruit 
    print "price: %d" % prices[fruit] 
    print "stock: %d" % stock[fruit] 

输出是除了橙色的价格都正确。使用%d,它打印出1的值。当我用%s替换%d时,将打印1.5的正确值,但我不明白为什么%d不能使用十进制值。 1.5是一个数字,所以在这种情况下,我不应该使用%d而不是%s?

+1

我只能猜测解释器在打印之前将%d转换为int和%s为字符串。但我不确定。 –

+0

@TonyTannous猜测不是你唯一的选择。 '%d'是整数,'%f'是浮点数。请参阅[文档](https://docs.python.org/2/library/stdtypes.html#string-formatting)。 –

+0

'%d'取*整数*。比较'int(1.5)'和'str(1.5)'。 –

回答

2

%d转换为十进制,不具有浮动部分

%S保持浮动,如果你想打印漂浮在屏幕

完全显示出来,用%F

1

由于%d是像Integer这样的数字格式的格式,因此您应该使用%f,而不是^^这是用于浮点数字。

相关问题