422 Stimmen

Wie gefährlich ist es, Fließkommazahlen zu vergleichen?

Ich weiß UIKit verwendet CGFloat wegen des auflösungsunabhängigen Koordinatensystems.

Aber jedes Mal, wenn ich prüfen will, ob zum Beispiel frame.origin.x es 0 Das macht mich krank:

if (theView.frame.origin.x == 0) {
    // do important operation
}

Ist nicht CGFloat anfällig für falsch-positive Ergebnisse beim Vergleich mit == , <= , >= , < , > ? Es handelt sich um eine Fließkommazahl und sie haben Ungenauigkeitsprobleme: 0.0000000000041 zum Beispiel.

Ist Objective-C dies intern beim Vergleich behandeln oder kann es vorkommen, dass ein origin.x die sich als Null liest, wird nicht mit 0 als wahr?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X