Rust: Le comportement d'arrondi de la division entière/du reste doit être documenté

Créé le 7 juil. 2015  ·  3Commentaires  ·  Source: rust-lang/rust

En utilisant Google, je peux trouver de nombreux arguments anciens sur le fonctionnement de la division entière dans Rust, mais je ne trouve rien dans la référence, les documents API pour les types entiers ou les documents API pour le trait Div qui dit ce qui a été réellement décidé. (Et la documentation semble impliquer que / , checked_div et wrapping_div peuvent ne pas tous faire la même chose.) Ceci est encore plus confus par la documentation de type entier qui utilise apparemment parfois / pour se référer à la division entière et parfois à la division mathématique. (Je ne peux pas proposer d'autre interprétation raisonnable de floor(self / other) dans la documentation wrapping_div .) Ce serait bien si cela était clairement documenté quelque part, car cela varie selon les langues et en est un des principales confusions avec l'arithmétique des nombres entiers.

Tous les 3 commentaires

http://doc.rust-lang.org/reference.html#behavior -not-considered-unsafe parle de « débordement » et mentionne l'emballage, mais vous avez raison de dire que nous pouvons mieux faire ressortir cela.

@steveklabnik

Il s'agit d'arrondir, pas d'envelopper. Nous utilisons le sdiv LLVM, qui s'arrondit vers zéro (et srem a le même signe que le dividende). Nous devrions documenter cela (la documentation pour wrapping_div actuellement _mens_, affirmant qu'elle s'arrondit vers l'infini négatif).

Cela devrait également laisser un avertissement, car entier / entier n'est pas toujours souhaité et se produit par accident. Juste une pensée si quelqu'un lit ceci.

Cette page vous a été utile?
0 / 5 - 0 notes