문제

다음 코드가 있습니다 ...

if (Price_Foreign != Double.NaN)
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}

출력 :

NaN USD

무엇을 제공합니까?

Double.nan을 사용하여 값이 존재하지 않으며 출력되지 않아야합니다.

도움이 되었습니까?

해결책

아마도 당신은 IsNaN 정적 기능?

다음과 같은 것을 시도하십시오.

if (!Double.IsNaN(Price_Foreign))
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}

다른 팁

그만큼 IEEE 754 플로팅 포인트 표준 NAN을 NAN과 비교할 수 있다고 말합니다 언제나 거짓을 반환합니다. 이 작업을 수행 해야하는 경우 Double.isnan ()을 사용하십시오.

그러나 이것이 당신이하려는 일을하는 가장 좋은 방법은 아닙니다. 복식은 정확하지 않으며 여기에서 가격을 나타내는 데 사용합니다. 나는 어느 시점에서, 당신은 평등의 가격을 비교하고 싶을 것입니다. 그것은 작동하지 않을 것입니다 부동 소수점 평등에 의존 할 수 없습니다.

복식을 사용하려고하는 대신 이러한 값 (평등 비교를 지원하는)에 대한 정수 유형을 실제로 살펴 봐야합니다. 복식은 과학적 문제를위한 것입니다. 금융이 아닙니다.

배경 정보로 : 무엇이 IsNaN() 방법은 그렇습니다 return v != v;

Double.NaN 그 자체도 아니고 동일하지 않습니다.

참조 double.nan 필드 .NET Framework 클래스 라이브러리 문서에서 :

사용 Isnan 값이 숫자가 아닌지 확인합니다. NAN과 동일한 다른 값과 비교하여 값이 숫자가 아닌지 여부를 결정할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top