This post festgestellt, dass Sie Gleitkomma-Variablen nicht mit ==
wegen Rundungsfehler vergleichen sollten. Was soll ich wann verwenden?Wie werden Gleitkommavariablen in C++ verglichen?
-2
A
Antwort
3
Sie könnten etwas entlang der Linien von if (abs(result - expected) < 0.00001)
oder für einen Verwandten, und nicht absolut, Fehler verwenden:
float relativeError = abs((A - B)/B);
if (relativeError <= maxRelativeError)
diese Details für mehr sehen. http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
-2
bool AreSame(double a, double b)
{
return fabs(a - b) < std::numeric_limits<double>::min();
}
+2
Dies ist nicht das Gleiche. Nehmen Sie zum Beispiel die Zahlen '1e-40' und' 2e-40', diese sind perfekt als Doppel darstellbar, aber vergleichen Sie gleich mit Ihrer Methode. – Lanting
Verwandte Themen
- 1. C# Wie zwei Saiten verglichen werden?
- 2. Wie werden generische Typen verglichen?
- 3. C - Warum muss NULL verglichen werden?
- 4. Wie werden Umlaute mit regulären Ausdrücken verglichen?
- 5. Wie kann Apache mit Verzögerungen verglichen werden?
- 6. Kann ein Bereich in Scala verglichen werden?
- 7. Wie werden Datumsangaben in Datetime-Feldern in Postgresql verglichen?
- 8. Wie zwei Funktionen verglichen werden, die mit `.bind()` aufgerufen werden?
- 9. DocumentDB - Zwei Pfade in der Abfrage können nicht verglichen werden
- 10. javascript switch/case: Werden Typen verglichen?
- 11. Tupelelemente können nicht mit Listenelementen verglichen werden
- 12. Wie wird CGAffinetransform verglichen?
- 13. Mit welchen Parametern werden RTOS verglichen?
- 14. Wie können zwei Dokumente mit unterschiedlichen Schemas verglichen werden?
- 15. Wie kann die verstrichene Zeit zwischen Datetime-Feldern verglichen werden?
- 16. Wie kann $^E mit einer Zahl verglichen werden?
- 17. Wie können mehrere Token mit regulären Ausdrücken verglichen werden?
- 18. Wie kann das Layout von PDF-Dateien programmgesteuert verglichen werden?
- 19. Kann eine where-Klausel mit einem Array verglichen werden?
- 20. Warum werden identische Teiltafeln in Python (2.7.11) als ungleich verglichen?
- 21. Warum werden Ganzzahlen in PowerShell nach Zahlen verglichen?
- 22. Warum wird assertDictEqual benötigt, wenn dicts mit `==` verglichen werden können?
- 23. C++ Ist es möglich, einen Objekttyp in eine Funktion zu übergeben, die verglichen werden soll?
- 24. Warum wird eine Struktur in C# mit NULL legal verglichen?
- 25. Linq to SQL - Wie mit einer Auflistung in der WHERE-Klausel verglichen werden?
- 26. Wie können Stringwerte, die von Datagrammpaketen empfangen werden, richtig verglichen werden?
- 27. Sollen DDD-Entitäten per Referenz oder ID verglichen werden?
- 28. Wie werden Python-Seiten codiert und mit welcher Sprache kann verglichen werden?
- 29. Komparator Best Practice, wenn Elemente nicht logisch verglichen werden können
- 30. Warum können TimeSpan und Guid Structs mit null verglichen werden?
Aber Vorsicht. Diese "Relativfehler" -Berechnung explodiert, wenn B Null ist. Wenn Sie relative Fehler verwenden, vergleicht Null im Allgemeinen nur "fast gleich" mit einem Wert, der genau Null ist. –