-1

나는 델파이 응용 프로그램에서 델파이 10.1에서 일하고 있습니다. 32 비트 용으로 성공적으로 컴파일되었습니다. 이제 64 비트 용으로 컴파일됩니다.델파이 64 비트 NaN 및 유효하지 않은 부동 소수점

일부 기능에서는 NaNResult 변수에 할당됩니다.
64 비트의 경우 NaN 대신 -1.#IND이 할당됩니다. 1 개 < 결과

abc = Nan; //so abc = -1.#IND 
if 1 < abc then // invalid floating point error here for 64bit 
begin 
end 

가 발생되는 예외

잘못된 부동 소수점 연산처럼 비교할 때 에러가 나중에 발생한다.

+0

대상 : 정확히 어떤 오류가 더 발생합니까? 2로 : 정수 제로 나누기는 예외가됩니다. 문제가 어디에 있습니까? –

+0

비교에서 오류가 발생했습니다 .1 <결과 ... – poonam

+0

** 어떤 오류가 있습니까? 이 정보를 질문에 포함하십시오. –

답변

1

부동 소수점 숫자가 NaN인지 또는 의심되는 경우. 그런 다음 NaN을 테스트하거나 예외를 처리 할 준비가되어 있어야합니다.

NaN 번호의 모든 연산은 예외를 트리거합니다.

당신은 정수와 힘 부문은 정수 나누기로 취급 할 수있는 IsNaN function

uses Math; 
..... 
if isNaN(x) then ...... 

C는 달리 사용 NaN를 테스트 할 수 있습니다 델파이는 별도의 사업자가 있습니다.

/은 항상 부동 소수점 결과를 생성합니다. div은 항상 정수 결과를 생성합니다.

마지막으로 부동 소수점 값이있는 연산은 IEEE-754이됩니다.

+1

IEEE 754는 조용한 NaN 변수가 자체와 평등 테스트에 대해 false를 테스트 할 것임을 지정합니다. Delphi는 NaN을 FPU에 넣을 때 예외를 throw하므로 테스트를 수행 할 수 없습니다. –