[Ruby] Les nombres - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Ruby] Les nombres (/showthread.php?tid=4094) |
[Ruby] Les nombres - Sephi-Chan - 16-06-2009 Les nombres Ls nombres sont des données très utilisées dans les programmes. Pour les gérer et les représenter, Ruby utilise plusieurs classes que nous allons découvrir.
Les entiers Nous avons eu l'occasion de voir les nombres en action un peu plus haut. Notre variable age qui valait 20 ? De quelle classe est-elle ? Pour le savoir, c'est simple, on utilise la méthode class d'un objet.
Fixnum ? Ah… Moi qui pensait que c'était un entier !? Et bien oui, Fixnum est bien un entier. En fait, c'est un petit entier. Un nombre entier est de type Fixnum tant qu'il reste en dessous de 1 073 000 000 environ, au delà, il devient un Bignum. Voyons cela en appelant la méthode class sur quelques nombres entiers.
On peut mettre des underscores dans nos nombres pour les rendre plus lisible. Vous pouvez les placer n'importe où (mais pas l'un à côté de l'autre), mais écrire 100_0_0000_0 ne serait pas vraiment lisible. Si vous trouvez la base 10 démodée, vous pouvez affecter vos nombres dans une autre base :
Quelques méthodes utiles Comme toute classe, celles qui gèrent les nombres proposent de nombreuses méthodes bien utile. abs La méthode abs retourne la valeur absolue d'un nombre.
next et pred Ces méthodes retournent respectivement l'entier suivant et l'entier précédent.
La méthode next dispose d'un alias, succ. Quand on appelle un alias de méthode, c'est la méthode vers laquelle l'alias pointe qui est appelé. On utilise souvent cela pour garantir la rétrocompatibilité d'un programme. Les énumérations Les entiers permettent quelques manipulation sous forme de boucle : les énumération. upto, downto upto permet d'énumérer des nombres dans un ordre croissant. Voici deux notations différentes au rendu identique.
Code : 1 downto fait l'inverse : l'entier qui appelle la méthode doit être plus petit que l'argument. Je vous montre une autre méthode de parcours :
Code : 1 Les gammes Les gammes (en anglais ranges) sont un autre moyen d'aller d'un entier à un entier plus élevé (et nous verrons que ça fonctionne également avec les chaînes de caractères). Voici trois manières de s'en servir. Le rendu est le même pour les trois.
Code : 0 Les décimaux Ici, ça ressemble beaucoup aux entiers, mais avec des points en plus !
Attention aux trop grandes précisions ! Si on demande à Ruby si 100_000.000_000_000_000_001 est plus grand que 100_000.0, il dira que non. Il se trompe. La parade est d'utiliser la classe BigDecimal, mais nous n'aborderons pas ça dans le cours. Quelques méthodes utiles round La méthode round arrondit à l'entier le plus proche.
floor et ceil Les méthodes floor et ceil ont respectivement comme rôle d'arrondir à l'entier inférieur et à l'entier supérieur.
Un peu d'arithmétique Ruby propose quelques opérations de base. Ces opérations peuvent travailler sur des entiers et des décimaux. Si les deux opérandes sont des entiers, le résultat sera entier. Si l'une des opérande est décimale, alors le résultat sera décimal.
Dans le cas d'une division d'un entier par un entier, Ruby effectue une division entière :
L'opérateur modulo (modélisé par l'opérateur %) permet d'avoir le reste de la division entière :
Pour élever un nombre à une puissance n, on utilise l'opérateur ** :
Sephi-Chan |