繁体   English   中英

C#-夹角与使用模数

[英]C# - Clamping an angle vs using modulo

如下面的代码所示,夹角之间有什么区别

do
 {
   if(angle < -360)
   {
     angle += 360;
   }
   if(angle > 360)
   {
     angle -= 360;
   }
 }while(angle < -360 || angle > 360);

...并使用模运算;

angle = angle % 360;

...,如果这与Unity游戏引擎有关。

假设angle是整数,则不同之处在于您的钳位代码允许的角度恰好为-360+360度。 模可将其减少为零。

这些评论谈到在处理负值方面的差异。 这些评论是错误的。 两种方法都将-10保留为-10

但是,如果angle不是整数类型,例如,如果它是double类型,则%运算符可能会给出与重复加法或减法不同的结果,这是由于重复加法或减法会导致舍入问题。 在这种情况下, %运算符会更好。 但是,您需要过大的角度才能解决这个问题,而对于那些过大的角度,无论如何您都没有足够的精度来准确表示角度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM