Вопрос

У меня есть переменная tdateTime, которая присваивается значением во время выполнения 40510.416667. Когда я извлекаю время в переменную типа TTIME, используя функцию FRAC, она устанавливает его на 0,41666666666. Почему это изменило точность значения, и есть ли рабочая обходка, чтобы сохранить точность из исходного значения, т.е. Чтобы установить его на 0,416667.

Это было полезно?

Решение

Одна из причин потери точности заключается в том, что tdateTime - это двойной, а параметр FRAC и возвращаемое значение расширены.

При преобразовании плавающих точек из одного типа в другой, немного Точность может быть потеряна. (То же самое происходит, когда вы делаете арифметику на них).

Чтобы правильно сравнить значение поплавка, вы должны использовать функцию CompareValue из математики устройства.

Другие советы

TdateTime - это номер плавающей запятой. Некоторые числа не могут быть представлены точно как номер плавающей запятой. 0,416667 / 0,41666666666, казалось бы еще одним.

Вы можете окружать до 5 или 6 цифр для дисплея. Это дает вам точность до 1 секунды.

Что каждый компьютерный ученый должен знать о номерах с плавающей запятой должен помочь, как и следовало Точность плавающей точки - Это даст вам некоторую подробную информацию, чтобы пойти с ответом Джеффа.

Спасибо за вашу помощь по этому поводу, очень ценится. Чтобы рассмотреть мою проблему, которая возникла из -за изменения точности, я использовал функцию сравнения вместо> = или <= операторы для сравнения времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top