我猜错了一些明显的东西。或者在我的头脑中有一些愚蠢的错误,但无论如何我无法弄明白。
我的代码是这样的。
for (int i = 0; i < ringNumber; i++)
{
float x = (radius * ringNumber) - (i * radius);
float y = (-1/2 * radius * ringNumber) - (i * 1/2 * radius);
Debug.Log ("Radius: " + radius + ", Ringnumber : " + ringNumber + ", i : " + i);
Debug.Log ("In Loop 3 Vertical : " + x + " " + y);
}
我得到的是
对于Radius = 2
和Ringnumber = 2
,Y
两次都以0
的形式发出。在我看来它应该是-2和-3。为什么不呢?
我在这样的其他厕所里也有类似的错误,但有些问题还算不错 它不是那么困难的数学我认为-2 * 2/2减去零次的东西。应该是-2还是不?
答案 0 :(得分:4)
这就是重点:
1.0 / 2.0 = 0.5和1/2 = 0
当划分整数值时,结果也是整数。所以1/2
将舍入为零。
使用1.0/2.0
for (int i = 0; i < ringNumber; i++)
{
float x = (radius * ringNumber) - (i * radius);
float y = (-1.0/2.0 * radius * ringNumber) - (i * 1.0/2.0 * radius);
Debug.Log ("Radius: " + radius + ", Ringnumber : " + ringNumber + ", i : " + i);
Debug.Log ("In Loop 3 Vertical : " + x + " " + y);
}
作为最佳做法,请始终使用如下数值:#.0
,以防止此类错误。您也可以尝试这种替代方案。 more suffix
1d/2d
= 0.5
这样你明确地说那些值是double并且不是整数。因此,结果值也将加倍。