Rust: O comportamento de divisão inteira / arredondamento restante deve ser documentado

Criado em 7 jul. 2015  ·  3Comentários  ·  Fonte: rust-lang/rust

Usando o Google, posso encontrar muitos argumentos antigos sobre como a divisão de inteiros deve funcionar no Rust, mas não consigo encontrar nada na referência, os documentos da API para os tipos inteiros ou os documentos da API para o traço Div que diz o que foi realmente decidido. (E a documentação parece implicar que / , checked_div e wrapping_div podem não fazer a mesma coisa.) Isso é ainda mais confundido pela documentação do tipo inteiro aparentemente às vezes usando / para se referir à divisão inteira e às vezes à divisão matemática. (Não consigo encontrar nenhuma outra interpretação razoável de floor(self / other) na documentação wrapping_div .) Seria bom se isso estivesse claramente documentado em algum lugar, já que isso varia entre os idiomas e é um deles das principais confusões com aritmética inteira.

Todos 3 comentários

http://doc.rust-lang.org/reference.html#behavior -não-considerado-inseguro fala sobre 'estouro' e menciona o empacotamento, mas você está certo de que podemos explicar isso melhor.

@steveklabnik

Trata-se de arredondar, não de embrulhar. Usamos sdiv do LLVM, que arredonda para zero (e srem tem o mesmo sinal do dividendo). Devemos documentar isso (a documentação de wrapping_div atualmente _lies_, alegando que se aproxima do infinito negativo).

Isso também deve deixar um aviso, porque inteiro / inteiro nem sempre é desejado e acontece por acidente. Apenas um pensamento, se alguém estiver lendo isso.

Esta página foi útil?
0 / 5 - 0 avaliações