Existe-t-il des différences entre Math.IEEERpremier (x, y) et x% y?Est-ce que Math.IEEERpassant (x, y) est équivalent à x% y?
13
A
Répondre
12
Non, ils ne sont pas équivalents. MSDN montre les différentes formules utilisées pour modulo et pour IEEERemainder et dispose d'un programme court d'échantillon présentant les différences:
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)
Quelques exemples où ils ont une sortie différente/identique (extrait de 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
Voir aussi ce bon answer par sixlettervariables sur une question similaire.
2
Non, ils ne sont pas identiques; Voir le documentation.
est ici la source:
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;
}
}
Questions connexes
- 1. x, y = getPos() et (x, y) = getPos()
- 2. x-y = x + ¬y + 1 problème
- 3. prologue, test (X, Y, Z): - Y est X + Z
- 4. Traduction X, Coordonnée Y
- 5. getElementFromPoint (x, y) - whaaaat?
- 6. Recrée le tableau pour que array [x] [y] devienne newarray [y] [x]
- 7. C#/Linq: Où X est Y?
- 8. visualisation id, x, y, t
- 9. Graphique 3D (x, y, z)
- 10. (X, Y) dans une grille
- 11. Texte DirectX à (x, y, z)
- 12. SciTE Regex, Correspond à l'expression entre x et y fois par exemple \ w * {x, y}
- 13. Quel est le LINQ équivalent à SUM (CASE QUAND X = Y ALORS 1 ELSE 0 FIN)?
- 14. Optimize y = x * x dans le champ Galois arithmétique
- 15. Minimisation de f (x, y) où x et y sont des entiers
- 16. Comment implémenter (x pow y) dans java, où x, y sont doubles?
- 17. groupes Java Matcher: Comprendre la différence entre "(: X | Y)" et "(X?) | (: Y)"
- 18. Obtenir le bouton x y params
- 19. messages de chat et x tag y
- 20. AS3: Point pour l'objet d'affichage x, y?
- 21. Recherche de l'emplacement x, y du composant
- 22. conversion lat/lon en coordonnées x/y
- 23. Contrôle contextuel WPF - Trouver coordonnées X, Y
- 24. contrôlant X et Y de spark.components.Window
- 25. forme Visio - obtenir position X, Y
- 26. Bitmap.SetPixel (x, y, Color) trop lent
- 27. Lat/X/désire ardemment Y Coordonne
- 28. Obtenir la position x et y?
- 29. Quelle est la différence entre [X, Y, Z] .each {| m | inclure m} et inclure X, Y, Z?
- 30. Jquery X, position Y envoyer sur ajax
Je me demandais simplement - Pourquoi diable voudrais-je ces résultats? '11/3 = -1'? clairement le module est ici 2. Mais sur quels scénarios voudrais-je -1? –
@RoyiNamir Vous avez une réponse ici: http://stackoverflow.com/a/27378075/200443 – Maxence