web-dev-qa-db-fra.com

Comment trouver le reste d'une division en Ruby?

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
39
Shpigford

L'opérateur modulo:

> 208 % 11
=> 10
69
Josh Lee

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 .

45
Phrogz

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/

0
xinr