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) );
}
}
}