Есть ли различия между Math.IEEERemainder (x, y) и x% y?Является ли Math.IEEERemainder (x, y) эквивалентным x% y?
13
A
ответ
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)
Некоторые примеры, где они имеют разные/идентичный выходной сигнал (взятый из 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
См. Также этот товар answer по шестиместным перечням по аналогичному вопросу.
2
Нет, они не то же самое; см. documentation.
Вот источник:
public static double IEEERemainder(double x, double y) {
double regularMod = x % y;
if (Double.IsNaN(regularMod)) {
return Double.NaN;
}
if (regularMod == 0) {
if (Double.IsNegative(x)) {
return Double.NegativeZero;
}
}
double alternativeResult;
alternativeResult = regularMod - (Math.Abs(y) * Math.Sign(x));
if (Math.Abs(alternativeResult) == Math.Abs(regularMod)) {
double divisionResult = x/y;
double roundedResult = Math.Round(divisionResult);
if (Math.Abs(roundedResult) > Math.Abs(divisionResult)) {
return alternativeResult;
}
else {
return regularMod;
}
}
if (Math.Abs(alternativeResult) < Math.Abs(regularMod)) {
return alternativeResult;
}
else {
return regularMod;
}
}
Смежные вопросы
- 1. «X не является членом Y», хотя X является другом Y?
- 2. AngularJS: `{{x + ',' + y}}` vs. `{{x}}, {{y}}`
- 3. Как реализуется реализация функции Eq typeclass: x == y = not (x/= y) x/= y = not (x == y)?
- 4. C# метод Math.IEEERemainder (x, y) эквивалентен в matlab?
- 5. x, y = getPos() vs. (x, y) = getPos()
- 6. MATLAB: среднее (X (Y == y, :));
- 7. Что представляет собой Math.IEEERemainder (x, y) в C++?
- 8. Разница между (X! = Y) и (! (X == Y))?
- 9. разница между ∀x∃y и ∃y∀x
- 10. Пролог: X является дедушкой Y
- 11. Является x x = y эквивалентом x = x && y, если оба являются C++ bool
- 12. Имеет ли x = y x указатель на y?
- 13. конденсаторные X, Y на Y
- 14. Можно ли решить X и Y, зная X^Y и X + Y?
- 15. Является ли `y = x = x + 1;` неопределенным поведением?
- 16. EASIEST Способ преобразования изображения SVG с использованием ARBITRARY Функция (x, y) -> (x '(x, y), y' (x, y))
- 17. Существует ли граничный радиус x x y?
- 18. Регулярное совпадение X ... X ... Y?
- 19. Почему `console.log (x = y)` выводит значение `x` вместо` y`?
- 20. Разрешено ли LEA [x], [y]?
- 21. x = 600 y = 1000, если x <= y будет false?
- 22. Convert Scene (x, y) to screen (x, y)
- 23. Прогнозирование (X, Y) из (X, Y, время) регрессии
- 24. Перегрузки операторов Equality: Is (x! = Y) == (! (X == y))?
- 25. Android. X вместо y и y вместо x
- 26. Scala не разрешает X как Y, хотя X расширяет Y
- 27. Разница между x | y и y <(x) в bash?
- 28. Восстановить массив, чтобы массив [x] [y] стал newarray [y] [x]
- 29. C++ полиморфизм ((X *) y) -> foo() vs ((X) * y) .foo()
- 30. Разница между [[x], [y], [z]] и [x, y, z]
Мне просто интересно - Зачем мне эти результаты? '11/3 = -1'? ясно, что модуль здесь равен 2. Но на каких сценариях я бы хотел «-1»? –
@RoyiNamir У вас есть ответ здесь: http://stackoverflow.com/a/27378075/200443 – Maxence