CS.FRACTION.LOSS

整数值相除并将结果分配给浮点实体时,可能丢失分数。

漏洞与风险

两个整数值相除后,结果也会截断为整数值(分数部分丢失)。结果分配给一个浮点变量后,该整数最有可能得到一个实数,并且不会丢失分数。

示例 1

复制
  class Foo {
    float Devider(long a, int b) {
      decimal d;
      float f = a / b; // defect
      d = a / b;       // defect
      f = b % 2;       // defect
      f = a / f;       // OK - one operand is not integral
      return f;
    }
 }

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。