全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6713 2
2014-11-07
我在用paste的时候,出现下面的问题,研究了半天不知道到底是什么原因?程序为:

n_sample=function(beta){
num=function(n){
l=pt(qt(0.025,n-1,lower.tail=F),n-1,ncp=sqrt(n)*0.5)
}
i=2
while(num(i)>(1-beta/100)){
i=i+0.1}
i}
x=seq(50,99,1)
y=rep(0,length(power))
for (i in 1:length(x)){
y=n_sample(x)
}
nmark=y[c(1,seq(6,50,5),50)]
label=c("50%","55%","60%","65%","70%","75%","80%","85%","90%","95%","99%")
leg=paste(label,nmark,sep="--")


***************************************************************************************
nmark的输出结果为:
  nmark
[1] 17.4 19.4 21.6 24.0 26.7 29.8 33.4 37.9 44.0 54.0 75.5


leg输出的结果却为:
leg
[1] "50%--17.4"             "55%--19.4"             "60%--21.6"            
[4] "65%--24.0000000000001" "70%--26.7000000000001" "75%--29.8000000000002"
[7] "80%--33.4000000000002" "85%--37.9000000000003" "90%--44.0000000000004"
[10] "95%--54.0000000000005" "99%--75.5"            
*************************************************************************************
问题:为什么中间红色的那些数据会多出那么多位的小数,其中y的结果只有一位小数来着?

请大神赐教!先谢谢啦~



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-11-7 13:32:35
计算机存储浮点数是会有这种小误差啦,把paste里的nmark先转成字符串,比如 sprintf('%.1f', nmark)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-12-12 15:08:13
robvsn 发表于 2014-11-7 13:32
计算机存储浮点数是会有这种小误差啦,把paste里的nmark先转成字符串,比如 sprintf('%.1f', nmark)
非常感谢,解决啦~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群