在对分配 mouseX 和 mouseY 的变量执行操作后,我在更新鼠标位置时遇到了问题。
def setup():
size(500,500)
def draw():
background(255,255,255)
noStroke()
fill (0,0,0)
a1 = mouseX
b1 = mouseY
print a1
a1 = a1*(4/500) - 2 #trans to [-2,2]
b1 = b1*(4/500) - 2
print a1
当我打印 a1 时,我打印的第一个值更新了,但第二个值没有。因此,如果我将鼠标位置移动到 (250,250(,我得到 250 作为第一个输出,-2 作为我的第二个值。我对python不太熟悉,因为我从未真正学习过它,而且我一直在寻找方法但找不到。请帮忙。谢谢
我对Python一无所知,但是在常规处理(基本上只是Java(中,int
值不能保存小数位。如果您尝试在int
值中存储小数位,则只需切掉小数部分即可截断小数位。
以下是一些示例:
int x = 3 / 2; // 1.5 is truncated so x is just 1
int y = 1 / 2; // 0.5 is truncated so y is just 0
现在,让我们将代码拆分为多个步骤。它可能看起来像这样:
int multiplier = 4 / 500;
a1 = a1 * multiplier;
a1 = a1 - 2;
希望你能看到4 / 500
被截断了,所以它只是0
.然后当你把它乘以a
,你会得到0
。然后你减去2
,所以最终结果是-2
。
你应该养成将代码拆分为多个步骤的习惯,这样你就可以更轻松地调试代码。
现在,要解决此问题,您需要使用允许小数位的float
变量。由于您使用的是文字(4
和500
都是文字(,因此您可以执行以下操作:
a1 = a1 * (4.0 / 500.0) - 2
现在这段代码使用4.0
和500.0
,所以结果是包含小数部分0.008
的。然后,其余的计算将按预期方式工作。
根据处理类型的工作方式,您可能还可以执行以下操作:
a1 = a1 * 4/500 - 2
如果a1
已经是一个float
值,那么这将起作用,因为首先计算a1 * 4
,结果是一个float
,其余部分应该按您的预期工作。但这只有在a1
已经是float
的情况下才有效。
您还应该尝试在谷歌上搜索"python intdivision"以获取大量结果。