【发布时间】:2017-06-05 08:52:19
【问题描述】:
我在某个地方找到了这段代码
signdig = function(x)
{
length(gregexpr("[[:digit:]]", as.character(x))[[1]])
}
但这会返回奇怪的数字,例如
> L=matrix(c(15,5,9,3.111),nrow=2)
> kappa(L)
[1] 239.5819
> signdig(kappa(L))
[1] 15
有人可以建议一种算法或代码来解决它吗?
【问题讨论】:
-
round(kappa(L)) -
我们可以使用
signif(kappa(L)) -
我认为问题在于找到一个数字当前具有的有效位数,而不是将其格式化为特定位数?
-
@Marius 是对的。
round(kappa(L))将其舍入。signif(kappa(L))将其四舍五入为六位数。 -
我可以在有限的范围内(即小数)解决它:` s = function(n) { i=0 while(n%%10!=0) { i= i+1 n=n*10 } return(i) }`
标签: r significant-digits