문제

40510.416667의 런타임에 값이 할당되는 TdateTime 변수가 있습니다. FRAC 함수를 사용하여 시간을 ttime 유형 변수로 추출하면 0.41666666666으로 설정합니다. 왜 그것이 값의 정밀도를 바꾸 었는지, 원래 값의 정밀도를 유지하기위한 워크 라운드가 있습니까? 0.416667로 설정합니다.

도움이 되었습니까?

해결책

정밀도 손실의 이유 중 하나는 tdateTime이 두 배이고 Frac의 매개 변수와 반환 값이 유형 확장되기 때문입니다.

부동 소수점을 한 유형에서 다른 유형으로 변환 할 때 약간 정밀도를 잃을 수 있습니다. (산술을 할 때도 마찬가지입니다).

플로트 값을 올바르게 비교하려면 단위 수학에서 CompareValue 함수를 사용해야합니다.

다른 팁

TdateTime은 부동 소수점 번호입니다. 일부 숫자는 플로팅 포인트 번호로 정확하게 표시 될 수 없습니다. 0.416667 / 0.41666666666은 또 다른 것 같습니다.

디스플레이를 위해 5 개 또는 6 자리까지 반올림 할 수 있습니다. 그것은 당신이 정확도를 약 1 초로 만듭니다.

모든 컴퓨터 과학자가 부동 소수점 번호에 대해 알아야 할 것입니다 그렇게 해야하는 것처럼 도움이 될 것입니다 부동 소수점의 정밀도 - Jeff의 답변과 함께 자세한 정보를 제공합니다.

이에 대한 모든 도움에 감사드립니다. 정밀도의 변화로 인해 발생하는 나의 문제를 해결하기 위해 시간을 비교하기 위해> = 또는 <= 연산자 대신 비교 함수를 사용했습니다.

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