3

我正在用这个简单的代码创建一个字典:

pixel_histogram = {}
min_value = -0.2
max_value = 0.2
interval_size = (math.fabs(min_value) + math.fabs(max_value))/bins

for i in range(bins):
    key = min_value+(i*interval_size)
    print key
    pixel_histogram[key] = 0
    print pixel_histogram

但我有点惊讶,因为我的打印得到了这些值:

#Printing keys
-0.2
-0.16
-0.12
-0.08
-0.04
0.0
0.04
0.08
0.12
0.16

#Printing the dictionary
{0.0: 0, 
-0.08000000000000002: 0, 
0.15999999999999998: 0, 
-0.16: 0, 
0.12: 0, 
-0.12000000000000001: 0, 
0.08000000000000002: 0, 
-0.04000000000000001: 0, 
-0.2: 0, 
0.03999999999999998: 0}

我没有弄清楚为什么值不同以及如何解决这个问题。任何帮助,将不胜感激。谢谢。

4

2 回答 2

8

Python 的print语句用于str()正在打印的项目。对于浮点值,str()将打印最多一定数量的十进制值。

打印字典时,print语句调用str()字典对象。字典在其__str__()方法定义中使用repr()键。repr()浮点值的函数打印到比str()函数更多的小数位。

字典使用repr()而不是str()键的原因是您几乎肯定希望看到print {'1': 1}print 不同于print {1: 1}.

于 2013-09-23T20:04:05.170 回答
-3

值是相同的。在第一种情况下,它们已被截断或四舍五入到小数位。您肯定熟悉数字的四舍五入吗?

于 2013-09-23T19:58:24.443 回答