Rust: Ganzzahldivision/Restrundungsverhalten sollte dokumentiert werden

Erstellt am 7. Juli 2015  ·  3Kommentare  ·  Quelle: rust-lang/rust

Mit Google kann ich viele alte Argumente darüber finden, wie die Ganzzahldivision in Rust funktionieren sollte, aber ich kann nichts in der Referenz finden, den API-Dokumenten für die Ganzzahltypen oder den API-Dokumenten für das Merkmal Div , das besagt: was eigentlich entschieden wurde. (Und die Dokumentation scheint zu implizieren, dass / , checked_div und wrapping_div möglicherweise nicht alle dasselbe tun.) Dies wird weiter durch die Integer-Dokumentation verwirrt, die anscheinend manchmal verwendet / bezieht sich auf die Ganzzahldivision und manchmal auf die mathematische Division. (Ich kann keine andere vernünftige Interpretation von floor(self / other) in der wrapping_div Dokumentation finden.) Es wäre schön, wenn dies irgendwo klar dokumentiert wäre, da dies von Sprache zu Sprache variiert und eine ist der wichtigsten Verwechslungen mit ganzzahliger Arithmetik.

Alle 3 Kommentare

http://doc.rust-lang.org/reference.html#behavior -not-considered-unsafe spricht von 'Überlauf' und erwähnt Wrapping, aber Sie haben Recht, dass wir dies besser aufdecken können.

@steveklabnik

Hier geht es um das Runden, nicht um das Umwickeln. Wir verwenden LLVMs sdiv , die gegen Null runden (und srem hat das gleiche Vorzeichen wie die Dividende). Wir sollten dies dokumentieren (die Dokumentation für wrapping_div _lies_ derzeit und behauptet, dass sie gegen negativ unendlich rundet).

Dies sollte auch eine Warnung hinterlassen, da integer/integer nicht immer erwünscht ist und zufällig passiert. Nur so ein Gedanke, falls das hier jemand liest.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen