gpt4 book ai didi

c# - 在 C# 中,我如何像 google calc 那样实现模数?

转载 作者:太空狗 更新时间:2023-10-29 20:53:51 24 4
gpt4 key购买 nike

我有一个代表形状的类。 Shape 类有一个名为 Angle 的属性。我希望此属性的 setter 自动将值包装到 [0,359] 范围内。

不幸的是,一个简单的 _Angle = value % 360; 只适用于正数。在 C# 中,-40 % 360 == -40。 Google calc 可以做到 the way I want it .该值应为 320。

C# 中最优雅的解决方案是什么?

这是我目前为止最好的方法:

     public double Angle {
get { return _Angle; }
set {
if ( value >= 0 ) {
_Angle = value % 360;
}
else {
_Angle = value - (360 * ((int)(value / 360) - 1));
}
}
}

编辑:

谢谢大家,我现在有:

     public double Angle {
get { return _Angle; }
set {
_Angle = (value % 360) + ((value < 0) ? 360 : 0);
}
}

..哪个更好:)

最佳答案

虽然这是针对 Java 的,但 Java 对模数也有相同的行为。 (即 -40 % 360 == -40)。

下面的代码应该从 [0. 360),无论给定的角度是正还是负。

public class Mod
{
public static int mod(int a, int b)
{
if (a < 0)
return b + (a % b);
else
return a % b;
}

public static void main(String[] args)
{
System.out.println(mod(40, 360)); // 40
System.out.println(mod(-40, 360)); // 320
System.out.println(mod(-400, 360)); // 320
}
}

请注意,当给定角度超过 -360 度时有效。

关于c# - 在 C# 中,我如何像 google calc 那样实现模数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/478721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com