Точность с плавающей точкой LibreOffice - PullRequest
0 голосов
/ 26 февраля 2019

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

Dim sTemp As Single, sLineDateTime As Single
Dim strTemp As String

strTemp = "2019-02-25"
sLineDateTime = DateValue(DateSerial(Left(strTemp, 4), Mid(strTemp, 6, 2), Right(strTemp, 2)))
strTemp = ""21:47:42"
REM TODO Time is being rounded off. Check
sTemp = TimeValue(TimeSerial(Left(strTemp, 2), Mid(strTemp, 4, 2), Right(strTemp, 2)))
sLineDateTime = sLineDateTime + sTemp

Результатом вышеприведенных вычислений является sLineDateTime = "43521.906250", который при преобразовании в дату / время равен "Пн 25-Фев-2019 09:45:00 PM".Ожидаемое действительное значение равно «43521,908125», что означает ошибку «0,001875000001746» или, другими словами, 2 минуты 42 секунды.Любые предложения о том, как я могу преодолеть эту проблему?

1 Ответ

0 голосов
/ 05 марта 2019

Я попробовал, прежде чем опубликовать это, и это не помогло.Я перешел на использование дат, которые теперь отлично работают для меня.Вот код.

        strTemp = "2019-02-25"
dLineDateTime = DateSerial(Left(strTemp, 4), Mid(strTemp, 6, 2), Right(strTemp, 2))
strTemp = "21:47:42"
dLineDateTime = dLineDateTime + TimeSerial(Left(strTemp, 2), Mid(strTemp, 4, 2), Right(strTemp, 2))
...