【问题标题】:Sometimes rounding number are not consistent [duplicate]有时舍入数字不一致[重复]
【发布时间】:2015-05-03 18:12:16
【问题描述】:

请您帮忙解决这个问题:

round(30.5)
[1] 30 
round(31.5)
[1] 32

我希望总是向上或向下 0.5 秒。任何解决方案

【问题讨论】:

  • floorceiling?
  • 我认识他们,不抱歉。我们不知道数字,但是当我们有 0.5 秒的数据时,我希望它们总是向上或向下
  • R 在平局时使用舍入为偶数
  • Rawr,你能重新阅读问题和评论吗
  • 我可以有你的功能吗?

标签: r


【解决方案1】:

这是R-FAQ 7.31 (link to the FAQ on your device) ......(link to the CRAN version) 的另一个实例。如果您总是希望 print.default 显示为 x.5 的浮点数“向上取整”,那么您需要添加一些“模糊”。我选择的模糊量与 print.default 通常显示数字的准确性相似。

  >  round(30.5 +0.00000001)
[1] 31

在函数中实现这一点:

> round.up <- function(x, digits=0) round(x+0.00000001, digits)
> round.up(30.5)

你也可以考虑一下:

> 31.5==31.50000000000000001
[1] TRUE
> 31.5==31.5000000000000001
[1] TRUE
> 31.5==31.500000000000001
[1] TRUE
> 31.5==31.50000000000001
[1] FALSE

>  31.50000000000001
[1] 31.5

> 31.50000001
[1] 31.5
> 31.50001
[1] 31.50001

【讨论】:

  • 谢谢,你能建议四舍五入
  • 将数学运算更改为'-'
  • 非常感谢您的帮助
【解决方案2】:

不需要依赖打印格式的偏移量的解决方案:

要始终向上取整,请使用

ceiling(x - 0.5)

要始终向下舍入,请使用

floor(x + 0.5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 2019-11-14
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多