我正在使用round()
函数,根据帮助
将第一个参数中的值舍入为指定的数字 小数位数(默认为0)。
digits
中的round(x, digits = 0)
参数是
表示小数位数的整数(round)。
有人可以解释这个输出吗?因为它似乎不像宣传的那样工作。但也许我只是忽视了一些事情。
> round(x = 234234.3456789, digits = 0)
[1] 234234
> round(x = 234234.3456789, digits = 1)
[1] 234234.3
> round(x = 234234.3456789, digits = 2)
[1] 234234.4
> round(x = 234234.3456789, digits = 3)
[1] 234234.3
> round(x = 234234.3456789, digits = 4)
[1] 234234.3
> round(x = 234234.3456789, digits = 5)
[1] 234234.3
> round(x = 234234.3456789, digits = 6)
[1] 234234.3
> round(x = 234234.3456789, digits = 7)
[1] 234234.3
我尝试更改数字,似乎没有四舍五入到数字所指示的小数位数(如图所示),而是指向由参数数字指示的总位数
> round(x = 34.3456789, digits = 0)
[1] 34
> round(x = 34.3456789, digits = 1)
[1] 34.3
> round(x = 34.3456789, digits = 2)
[1] 34.35
> round(x = 34.3456789, digits = 3)
[1] 34.346
> round(x = 34.3456789, digits = 4)
[1] 34.3457
> round(x = 34.3456789, digits = 5)
[1] 34.34568
> round(x = 34.3456789, digits = 6)
[1] 34.34568
> round(x = 34.3456789, digits = 7)
[1] 34.34568
这对我来说很奇怪。但是,也许我只是做错了。
试图找到我发现this other question here in SO的解释,其中一个例子实际上似乎按照我的预期运作。
x <- c(pi, pi*1000, pi/1000)
> round(x, digits = 0)
[1] 3 3142 0
> round(x, digits = 1)
[1] 3.1 3141.6 0.0
> round(x, digits = 2)
[1] 3.14 3141.59 0.00
> round(x, digits = 3)
[1] 3.142 3141.593 0.003
> round(x, digits = 3)
[1] 3.142 3141.593 0.003
> round(x, digits = 4)
[1] 3.1416 3141.5927 0.0031
> round(x, digits = 5)
[1] 3.14159 3141.59265 0.00314
> round(x, digits = 6)
[1] 3.141593 3141.592654 0.003142
> round(x, digits = 7)
[1] 3.1415927 3141.5926536 0.0031416
但是当我尝试用我原来的例子做类似的事情时,它不起作用。实际上,与x <- c(pi, pi, pi)
类似的东西,而不是x <- c(pi, pi*1000, pi/1000)
不起作用(注意最后两个,它不会添加另一个小数位,而是整体上7个位置的削减)。
x <- c(pi, pi, pi)
> round(x, digits = 0)
[1] 3 3 3
> round(x, digits = 1)
[1] 3.1 3.1 3.1
> round(x, digits = 2)
[1] 3.14 3.14 3.14
> round(x, digits = 3)
[1] 3.142 3.142 3.142
> round(x, digits = 3)
[1] 3.142 3.142 3.142
> round(x, digits = 4)
[1] 3.1416 3.1416 3.1416
> round(x, digits = 5)
[1] 3.14159 3.14159 3.14159
> round(x, digits = 6)
[1] 3.141593 3.141593 3.141593
> round(x, digits = 7)
[1] 3.141593 3.141593 3.141593
我检查对象类和结构,看起来是一样的。
这里发生了什么?
答案 0 :(得分:1)
实际上,round
工作正常:
a <- round(x = 234234.3456789, digits = 7)
paste(a)
[1] "234234.3456789"
在您的示例print.default
中,当您向R询问print
时,会发生什么事情正在减少数字位数。
print.default(a, digits = 15)
[1] 234234.3456789
您可以通过options
options(digits = 15)
round(pi, digits = 15)
[1] 3.14159265358979