Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# z轴旋转的调试不是0,而在inspector中是0_C#_Unity3d - Fatal编程技术网

C# z轴旋转的调试不是0,而在inspector中是0

C# z轴旋转的调试不是0,而在inspector中是0,c#,unity3d,C#,Unity3d,在检查器中,我的变换的z轴旋转为0 但当我使用以下代码行调试时: Debug.Log("local-Euler-z: " + transform.localEulerAngles.z); Debug.Log("global-Euler-z: " + transform.eulerAngles.z); Debug.Log("local-rot-z: " + transform.localRotation.z); Debug.Log("global-rot-z: " + transform.rota

在检查器中,我的变换的z轴旋转为0

但当我使用以下代码行调试时:

Debug.Log("local-Euler-z: " + transform.localEulerAngles.z);
Debug.Log("global-Euler-z: " + transform.eulerAngles.z);
Debug.Log("local-rot-z: " + transform.localRotation.z);
Debug.Log("global-rot-z: " + transform.rotation.z);
你可以在我的截图中看到,我没有得到0作为值


首先,你得到的价值非常小<代码>xE+/-y是一个

所以实际上你有这样的东西:
6.349661E-05==0.000063449661
,非常接近实际的零

这个问题来自浮点数的精度,因为编程中浮点数实际上有2个零(-0&+0),这就是工作原理。我不想让这个答案过多,如果你想读一些关于浮动的东西,上面的链接是一个很好的起点

由于这个
float
numbers”问题,相同的数字可以用相近的
float
类型表示法表示,但仍然不同
float->int
对于要比较(比如说)非int度的情况来说并不太好,而且不能比较四元数这样的数字-它的组件
(x,y,z,w)
的值介于0和1之间。要解决这个问题,您需要手动地将浮点值与机器零进行“比较”,这对于新手来说有点复杂,另一个解决方案是使用Unity API



顺便说一句,transform inspector显示的是纯零,因为它只会丢弃旋转向量的这些不受影响的数字。

使用(int)transform.localEulerAngles.z是用于me@AlpakaJoe,如果我的答案对您有帮助,请将其标记为正确答案。