【发布时间】:2021-01-04 18:24:01
【问题描述】:
抱歉这个愚蠢的问题。我正在向我 13 岁的女儿解释一些编程,但在做一个简单的练习时卡住了,重点是循环和逻辑。 我们的想法是使用以下代码创建一个在 0 到 10 之间反弹的“动画”点
a <- 0
for(i in 1:10000){
if(a == 10){
b <-1
}
if(a == 0){
b <- 0
}
if(b == 0){
a <- a + 0.1
}
if(b == 1){
a <- a - 0.1
}
plot(a, ylim = c(0,10))
}
也就是说,我希望当“a”变为 0 时,“b”也变为 0,并且脚本使用加法公式(并且点向上移动),而当“a”等于 10 时,“b”变为1 并激活减法公式(点向下移动)。 然而,显然“if”命令在某些时候永远不会捕捉到“a”等于 10。 我一直试图了解这有什么问题。有什么想法吗?
【问题讨论】:
-
这是一个浮点精度问题 - 有关讨论和建议,请参阅 the relevant FAQ。举个简单的例子:
x <- 0; for(i in 1:100) {x <- x + 0.1}; print(x); x == 10; print(x, digits = 22); print(0.1, digits = 22)
标签: r if-statement logic