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 浮点精度的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令word转TXT文件保持文本格局

python怎么避免浮点精度问题

浮点型数据的精度是啥意思

浮点型数据丢失精度的原因

精度浮点型数据精确到了几位小数呢?

C语言中单精度和双精度浮点型数据的数值范围是多少?怎么算出来的?请大虾帮忙了!