Inconsistencies Rounding Up with Ceiling Function
我必须将数据框四舍五入到小数点后两位,而 1/100 的小数点总是需要四舍五入。但是,我看到我正在使用的上限函数有一些奇怪的行为。
1 2 3 4 5 6 7 8 9 10 11 | a <- c(268.600, 268.700, 268.500) b <- c(22.410, 653.423, 124.400) df1 <- data.frame(a, b) ceiling(df1 * 100)/100 a b 1 268.61 22.41 2 268.70 653.43 3 268.50 124.40 |
我希望 df1[1,1] 的输出为 268.60 .. 但我得到 268.61。我不确定为什么会这样; \\'a\\' 中的其他数字给出了预期的输出。我正在使用 R 版本 3.5.3
编辑:
@Akrun 发现 col A 中的问题是浮点数的结果。
我现在正在寻求帮助的是一种将 10.032 之类的数字舍入到 10.04 的方法,同时还避免由于浮点问题而将 10.000 之类的数字舍入到 10.01。
现在我被 df1[1,1] 正确舍入或 df[2,2] 正确舍入,但不是两者兼而有之。
它不完全是一个整数,所以它不是。等于
1 2 | (df1$a * 100)- 26860 #[1] 3.637979e-12 1.000000e+01 -1.000000e+01 |
与
一起获得
为了避免这种情况,我们可以转换成
1 2 | ceiling(as.integer(df1$a * 100))/100 #[1] 268.6 268.7 268.5 |