다음을 통해 공유


CA2242: NaN에 대해 정확하게 테스트하십시오.

TypeName

TestForNaNCorrectly

CheckId

CA2242

범주

Microsoft.Usage

변경 수준

주요 변경 아님

원인

식이 SingleNan() 또는 DoubleNan()에 대한 값을 테스트합니다.

규칙 설명

산술 연산이 정의되지 않은 경우 숫자가 아닌 값을 나타내는 Double.NaN이 나타납니다. 값과 Double.NaN이 같은지 테스트하는 식은 항상 false를 반환합니다. 값과 Double.NaN이 다른지 테스트하는 식은 항상 true를 반환합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하고 값이 Double.NaN을 나타내는지 정확히 확인하려면 SingleIsNan(Single) 또는 DoubleIsNan(Double)을 사용하여 값을 테스트합니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.

예제

다음 예제에서는 Double.NaN에 대한 값을 잘못 테스트하는 식과 Double.IsNaN을 올바로 사용하여 값을 테스트하는 두 개의 식을 보여 줍니다.

Imports System

Namespace UsageLibrary

   Class NaNTests

      Shared zero As Double

      Shared Sub Main()
         Console.WriteLine( 0/zero = Double.NaN )
         Console.WriteLine( 0/zero <> Double.NaN )
         Console.WriteLine( Double.IsNaN(0/zero) )
      End Sub

   End Class

End Namespace
using System;

namespace UsageLibrary
{
   class NaNTests
   {
      static double zero;

      static void Main()
      {
         Console.WriteLine( 0/zero == double.NaN );
         Console.WriteLine( 0/zero != double.NaN );
         Console.WriteLine( double.IsNaN(0/zero) );
      }
   }
}