c# - 为什么 -2 % 360 在 C# 中给出 -2 而不是 358

标签 c# .net math

Microsoft Mathematics 和 Google 的计算器为 -2 % 360 给出了 358,但 C# 和 Windows 计算器输出的是 -2 ...这是正确答案吗?

最佳答案

C# 编译器根据 C# 规范做正确的事情,该规范规定对于整数:

The result of x % y is the value produced by x – (x / y) * y.

请注意 (x/y) 总是舍入 towards zero

有关如何计算二进制和十进制 float 的余数的详细信息,请参阅规范的第 7.8.3 节。

这是否是您的“正确答案”取决于您如何看待余数运算。余数必须满足以下身份:

dividend = quotient * divisor + remainder

我说清楚-2 % 360 就是-2。为什么?好吧,首先问问自己商数是多少。 360进-2几次?显然是零次! 360 根本不进入-2。如果商为零,则余数必须为 -2 才能满足恒等式。如果说 360 总共进入 -2 次 -1 次,余数为 358,你不觉得很奇怪吗?

关于c# - 为什么 -2 % 360 在 C# 中给出 -2 而不是 358,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560267/

相关文章:

C#执行cmd命令不起作用

c# - 如何使用 Entity Framework `ValueComparer<T>` ?

c# - 使用 .NET 在 sAMAccountName 中创建超过 20 个字符的用户时出错

c# - 带投影的 Azure 表存储查询是否可以仅返回投影列而不包含 PK 和 RK?

c# - WCF 错误 - 找不到引用契约(Contract) 'UserService.UserService' 的默认终结点元素

c++ - 从整数 vector 生成大小为 k 的下一个组合

javascript - 确定 2 的幂?

python math.acos 反余弦问题

C# 使用静态指令无效

c# - 如何使用 .wer 文件调试应用程序