AMEZING77

View the Project on GitHub AMEZING77/AMEZING77

描述

浮点数相等判断,调试时遇到的BUG; alt text

原因

浮点数在计算机中是以二进制的形式存储的,但是由于精度问题,两个看似相等的浮点数实际上可能并不完全相等。

alt text

解决办法

  1. 使用Math.Abs(a - b) < float.Epsilon来判断是否相等,其中epsilon是一个很小的正数,用来表示允许的最大误差范围。例如:
    float a = 0.1f;!
    float b = 0.3f - 0.2f;
    if (Math.abs(a - b) <= float.Epsilon) 
    
  2. 使用Math.Round类进行精度截断,这种方法适用于需要特点业务场景。例如: