J'essaie d'obtenir le reste d'une division en utilisant Ruby.
Disons que nous essayons de diviser 208 par 11.
La finale devrait être "18 avec un reste de 10" ... ce dont j'ai besoin en fin de compte, c'est que 10
.
Voici ce que j’ai eu jusqu’à présent, mais cela s’étouffe dans ce cas d’utilisation (le reste est 0
).
division = 208.to_f / 11
rounded = (division*10).ceil/10.0
remainder = rounded.round(1).to_s.last.to_i
L'opérateur modulo:
> 208 % 11
=> 10
Si vous n'avez besoin que de la partie entière, utilisez des entiers avec l'opérateur /
ou la méthode Numeric#div
:
quotient = 208 / 11
#=> 18
quotient = 208.0.div 11
#=> 18
Si vous n'avez besoin que du reste, utilisez l'opérateur %
ou la méthode Numeric#modulo
:
modulus = 208 % 11
#=> 10
modulus = 208.0.modulo 11
#=> 10.0
Si vous avez besoin des deux, utilisez la méthode Numeric#divmod
. Cela fonctionne même si le destinataire ou l'argument est un float:
quotient, modulus = 208.divmod(11)
#=> [18, 10]
208.0.divmod(11)
#=> [18, 10.0]
208.divmod(11.0)
#=> [18, 10.0]
La méthode Numeric#remainder
est également intéressante. Les différences entre tous ces éléments sont visibles dans la documentation de divmod
.
veuillez utiliser Numérique # reste parce que mod n'est pas reste
Modulo:
5.modulo(3)
#=> 2
5.modulo(-3)
#=> -1
Reste:
5.remainder(3)
#=> 2
5.remainder(-3)
#=> 2
voici le lien traitant du problème https://rob.conery.io/2018/08/21/mod-and-remainder-are-not-the-same/