r - RStudio中模块功能的奇怪错误
问题描述
我不得不在我必须做的一些工作上使用类似的代码并得到这个错误。基本上我无法理解为什么 R 说 234/6.5 的余数在循环内部时为 6.5,但在外部时为 0(应该如此)。
x=0
for (i in 1:100){
x=x+3.6
if (i==65){
print(x)
print(x%%6.5==0)
print(x%%6.5)
}
if(x%%6.5==0){
#print(i)
break
}
}
x=234
x%%6.5==0
[1] 234
[1] FALSE
[1] 6.5
> x=234
>
> x%%6.5==0
[1] TRUE
任何帮助表示赞赏,抱歉英语/解释不好
解决方案
你可以通过四舍五入来解决这个问题。在下面的例子中,如果你四舍五入到小数点后 12 位,你会得到正确的答案。如果您四舍五入到小数点后 13 位或更多位,您将得到原始答案。
x=0
res <- NULL
for (i in 1:100){
x=round(x+3.6, 12)
if (i==65){
print(x)
print(x%%6.5==0)
print(x%%6.5)
}
if(x%%6.5==0){
#print(i)
break
}
}
# [1] 234
# [1] TRUE
# [1] 0
x=0
for (i in 1:100){
x=round(x+3.6, 13)
if (i==65){
print(x)
print(x%%6.5==0)
print(x%%6.5)
}
if(x%%6.5==0){
#print(i)
break
}
}
# [1] 234
# [1] FALSE
# [1] 6.5
推荐阅读
- laravel - 只向客户端发送数据的一个版本,同时保持事后修改这些数据的能力而不影响发送的数据?
- javascript - 如何随机化测验随机播放 JavaScript 数组?
- reactjs - React-Select 过滤器在反应钩子上不起作用
- angular - 如何减少由于 socket.io 而停止的 Angular 项目的加载时间
- python - 虽然需要循环测试用例帮助
- reactjs - React js Proptypes之后没有提升吗?
- ffmpeg - Ffmpeg - 如何以多种质量创建 HLS 多语言流?
- .net - 框架项目需要 Dotnet 核心运行时
- laravel - 使用 laravel 8 注册后如何发送电子邮件?
- awesome-wm - 是否可以让任务列表自动切换到不同的布局?