向下舍入数字

dan*_*dan 3 r significant-digits

numeric喜欢这个:

a <- -1.542045
Run Code Online (Sandbox Code Playgroud)

我想将它们向下舍入(或向上舍入abs)到小数点后的2位数. signif(a,3)将它向下舍入并给我1.54作为结果但是对于这个例子我想要的结果是-1.55.

任何的想法?

李哲源*_*李哲源 14

我想你在找floor(a * 100) / 100.

快速测试

a <- c(-1.542045, 1.542045)
floor(a * 100) / 100
# [1] -1.55  1.54
Run Code Online (Sandbox Code Playgroud)

我刚注意到你在7小时前改变了你的问题.然后我的答案并没有完全符合你的要求(因为我假设通过"四舍五入"你总是想要向前舍去-Inf).但我在第一版的答案中已经讨论过这一点.现在我要在这里复制相关内容.

  • 有了sign(a) * ceiling(abs(a) * 100) / 100你可以向轮的数据Inf为正值和-Inf负值.
  • 使用sign(a) * floor(abs(a) * 100) / 100,您将正值和负值都舍入为0.

快速测试

a <- c(-1.542045, 1.542045)

sign(a) * ceiling(abs(a) * 100) / 100
# [1] -1.55  1.55

sign(a) * floor(abs(a) * 100) / 100
# [1] -1.54  1.54
Run Code Online (Sandbox Code Playgroud)