문제
다음 코드가 있습니다 ...
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과 동일한 다른 값과 비교하여 값이 숫자가 아닌지 여부를 결정할 수 없습니다.
제휴하지 않습니다 StackOverflow