计算data.table列中出现的值时的浮点算术问题

时间:2018-08-27 12:27:30

标签: r data.table

我有一个浮点算术问题,使我无法正确计算data.table列中值的出现。一个例子:

> i = 0.1
> i = i + 0.05
> 
> value = c(i, 0.15, 0.2, 0.2, 0.3)
> dt = data.table(value)
> dt[, .(.N), by = .(value)]
   value N
1:  0.15 1
2:  0.15 1
3:  0.20 2
4:  0.30 1

如您所见:

> i == 0.15
[1] FALSE

我是否可以通过一种简单的解决方法来获得以下结果? I和0.15是一系列操作的结果。与其尝试在流程中尽早解决问题,不如通过计数来了解小组是否可以解决该问题。

> dt[, .(.N), by = .(value)]
   value N
1:  0.15 2
2:  0.20 2
3:  0.30 1

1 个答案:

答案 0 :(得分:0)

@Roland提供了答案。我只需要在round语句中bydt[, .(.N), by = .(round(value, 16))]