Math.IEEERemainder(x,y)是否相当于x%y?

Ahm*_*rid 13 .net

Math.IEEERemainder(x,y)x%y之间有什么区别吗?

Dir*_*mar 12

不,他们不等同.MSDN显示了用于模数和IEEERemainder的不同公式,并且有一个简短的示例程序,显示了差异:

IEEERemainder = dividend - (divisor * Math.Round(dividend / divisor))

Modulus = (Math.Abs(dividend) - (Math.Abs(divisor) * 
      (Math.Floor(Math.Abs(dividend) / Math.Abs(divisor))))) * 
      Math.Sign(dividend)
Run Code Online (Sandbox Code Playgroud)

它们具有不同/相同输出的一些示例(取自MSDN):

                         IEEERemainder              Modulus
   3 / 2 =                          -1                    1
   4 / 2 =                           0                    0
   10 / 3 =                          1                    1
   11 / 3 =                         -1                    2
   27 / 4 =                         -1                    3
   28 / 5 =                         -2                    3
   17.8 / 4 =                      1.8                  1.8
   17.8 / 4.1 =                    1.4                  1.4
   -16.3 / 4.1 =    0.0999999999999979                   -4
   17.8 / -4.1 =                   1.4                  1.4
   -17.8 / -4.1 =                 -1.4                 -1.4
Run Code Online (Sandbox Code Playgroud)

在类似的问题上,通过sixlettervariables 也可以看到这个好的答案.

  • 我只是想知道 - 为什么我想要那些结果呢?`11/3 = -1`?显然这里的模数是2.但在什么情况下我想要`-1`? (2认同)