将分钟转换为小时时出现奇怪的错误

Posted

技术标签:

【中文标题】将分钟转换为小时时出现奇怪的错误【英文标题】:Strange error while converting minutes to hours 【发布时间】:2016-08-24 17:56:49 【问题描述】:

当我遇到一个奇怪的错误时,我正在使用以下命令将分钟(例如 366)转换为小时和分钟格式(例如 6:06):

library(chron) #https://cran.r-project.org/web/packages/chron/chron.pdf

sub(":\\d2", "", times((X%/%60 +  X%%60 /3600)/24))

我在实际代码中指定了一个向量来代替 X,现在我将只使用一个数字。例如:

sub(":\\d2", "", times((240.8%/%60 +  240.8%%60 /3600)/24))

应为“04:01”。但是,419.8 分钟的同一命令错误地给出“6:00”?

sub(":\\d2", "", times((419.8%/%60 +  419.8%%60 /3600)/24))

当我在没有数字 419 的情况下重新运行它时,它又是正确的。 “06:59”。我用随机数重新运行了代码,它似乎与其他人相处得很好。我无法理解这个问题。我究竟做错了什么?

【问题讨论】:

请不要发布您的代码/控制台的图像,只需粘贴文本本身。 times()函数从何而来? 来自“chron” 这是一个正则表达式问题,与chrontimes 无关。检查您对times 的调用的输出,而不是对sub 的周围调用。 【参考方案1】:
library(chron)
times((419.8%/%60 +  419.8%%60 /3600)/24)
# [1] 06:01:00
times((419%/%60 +  419%%60 /3600)/24)
# [1] 06:00:59

问题出在您的sub 正则表达式中。试试:

sub(":\\d2$", "", times((419%/%60 +  419%%60 /3600)/24))
# [1] "06:00"
sub(":\\d2$", "", times((419.8%/%60 +  419.8%%60 /3600)/24))
# [1] "06:01"

更新

此外,您的数学错误地将分钟转换为秒。试试:

times((419.8%/%60 +  419.8%%60 / 60)/24)
# [1] 06:59:48
sub(":\\d2$", "", times((419.8%/%60 +  419.8%%60 / 60)/24))
# [1] "06:59"

【讨论】:

谢谢!但是 419 分钟的正确结果不应该是 06:59 而不是 6:01,因为 419 分钟对应于 6 小时 59 分钟。例如,在这个版本中,300 和 359 分钟都给出:“05:00”。也许我做错了。

以上是关于将分钟转换为小时时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

加载视图寻呼机时出现奇怪的 OutOfMemoryError

NSTimeInterval 到小时和分钟的错误转换

使用 PHP 将分钟数转换为小时和分钟

将小时:分钟:秒转换为分钟

Excel:将持续时间(小时、分钟、秒)转换为 6 分钟的增量

使用 .htaccess 将 http 重定向到 https 时,某些 url 出现奇怪的 401 错误