当字典 - python中显示时,浮动打印的方式不同

pce*_*con 3 python dictionary numbers key

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

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
Run Code Online (Sandbox Code Playgroud)

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

#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}
Run Code Online (Sandbox Code Playgroud)

我没弄清楚为什么值不同,我怎么能解决这个问题.任何帮助,将不胜感激.谢谢.

Alo*_*k-- 8

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

打印字典时,该print语句调用str()字典对象.字典在其__str__()方法定义中用于repr()键.该repr()浮点值函数打印到更多小数位数比str()功能一样.

字典使用repr()而不是str()键的原因是你几乎肯定希望以print {'1': 1}不同的方式看待打印print {1: 1}.