Die Backup-Lösung, die ich habe, beinhaltet einen neuen Operator -/
. Die Mathematik besteht nicht darin, zwischen Doppelpunkten und Ganzzahlen hin- und herzuwechseln, wodurch Randfälle mit sehr großen Zahlen vermieden werden. Auf der anderen Seite kann dies stattdessen überlaufen, wenn sowohl denominator
als auch numerator
sehr große negative Zahlen sind, und ich bin mir nicht sicher, was genau passiert, wenn denominator
negativ ist.
infix operator -/ {
precedence 150
associativity left
}
func -/ (numerator: Int, denominator: Int) -> Int {
if numerator < 0 {
return (numerator - (denominator - 1))/denominator
}
return numerator/denominator
}
Alle in Bezug auf die Swift geschrieben Lösung wird wahrscheinlich mit seinem Anteil von Fragen am Ende, wenn Sie C Verhalten emulieren möchten. Eine andere Möglichkeit wäre, eine winzige divide
Funktion in den Überbrückungs-Header aufzunehmen und den Operator damit zu implementieren.
Das wäre 'Int (Boden (Float (a)/Float (b))), obwohl. Bestimmt nicht für schwache Nerven. – zneak