LibreOffice 浮点精度
Posted
技术标签:
【中文标题】LibreOffice 浮点精度【英文标题】:LibreOffice floating point precision 【发布时间】:2019-02-26 12:40:22 【问题描述】:我正在使用浮点数计算日期和时间。但是,我注意到计算的值与预期不符。这是代码sn-p。
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",当转换为日期/时间时是“Mon 25-Feb-2019 09:45:00 PM”。预期的实际值是“43521.908125”,它转换为“0.001875000001746”的错误,即 2 分 42 秒。关于如何克服这个问题的任何建议?
【问题讨论】:
你能用双打代替单打吗? 我在发布之前尝试过,但没有帮助。我切换到日期类型,并且非常适合我。我在下面发布答案。 【参考方案1】:我在发布之前尝试过,但没有帮助。我改用现在对我来说非常有用的日期。这是代码。
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))
【讨论】:
以上是关于LibreOffice 浮点精度的主要内容,如果未能解决你的问题,请参考以下文章