将分钟转换为小时时出现奇怪的错误
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”
这是一个正则表达式问题,与chron
或times
无关。检查您对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