写了一个代码,大概的功能是从文件中读取一系列的整数进行处理。其中有涉及到要将读取出来的数据与已有的数据进行比较,将两个数值输出出来看发现两个数值是一模一样的,出了这个问题之后首先想到的是会不会是我读取出来的数据他自动会转变成一个浮点型的数据。可将数据输出的时候,其实就可以知道我这个想法时完全错误的。我们可以做一个实验:

>>> print float(1)
1.0

可以看到只要是浮点数哪怕是一个整数他都会输出小数点,而原来的变量输出出来大概是这么一个效果:

>>> print a,b
1 1
>>> print a==b
False

这可苦煞我了,明明输出的结果是一样的为什么比较是否相等的时候就是这样呢?这个时候解决问题关键的突破口在于我将数据做了一个强制转化,为了避免浮点数的误差(在这个时候我还是天真的以为变量是浮点型的),我在变量之后加了一个很小的数字比如0.1,这样在取整数之后是对数据不会有影响的,这个时候爆错误了:

>>> a=int(a+0.1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'float' objects

是的,a+0.1不合法!一个是str类型一个是float。这个时候问题就迎刃而解了~其实就是读取数据之后,没有对数据进行类型转换,所以导致我在比较两个数据的时候,一个是int型的数据,一个是str,这样比较两个数据是否相等的结果必然是不等。所以问题找到,解决的话就加一个强制转换就可以了!

>>> print int(a)==b
True

这样就正常了~