Ответ 1
Нет, они не эквивалентны. 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)
Некоторые примеры, когда они имеют различный/идентичный вывод (взятый из 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
См. также этот хороший ответ по шестизначным переменным по аналогичному вопросу.