python数字比较不相等问题

问题遇到的现象和发生背景

我用python3.9的socket,Windows系统,utf-8,从client向server发送浮点数和整数的字符串。
在client端,我用to_string()方法发送字符串后的浮点数和整数。
在server端,我对字符串解析提取浮点数和整数,并且不断对比,看是否有重复的,如果没有重复的,则添加进一个list。

为什么有时候肉眼看着都是相等的两个浮点数或整数,使用'=='判断却不是相等的?我该怎么解决这个问题?

问题相关代码,请勿粘贴截图
# client
    def to_string(self):
        return f"price,{self.__price},type,{self.__type},volume,{self.__volume}"

# server
  if price == value:
      return Ture

to_string(float_value)与float(str)之间的换算不是完全可逆的,因为计算机是通过二进制存储数据,很多float数值都是近似表示的,float转str本身就存在一定的误差范围。要判断两个float是否相等,你要设定误差范围。如(float1-flaot2)<1e-7,就是说两个float作差后小于特定值,既可以认为这两个float相等。

等号判断两个变量是不是同一个东西,也就是内存中是不是同一地址。数字小于127是同一地址,大的就不一定了。
因此,判断两个数字是不是一样大,最好相减是不是等于零来判断。


可以查看手册:python- 数字 中的内容