« Java/Annexe/Nombres » : différence entre les versions

Une page de Wikiversité, la communauté pédagogique libre.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
(:Julien:) (discussion | contributions)
Aucun résumé des modifications
Ligne 12 : Ligne 12 :
*types primitifs ou types objets ;
*types primitifs ou types objets ;
*nombres entiers ou nombres à virgules flottantes.
*nombres entiers ou nombres à virgules flottantes.



== Les types primitifs ==
== Les types primitifs ==


Pour les entiers : byte, short, int, long qui occupent respectivement 8,16, 32 et 64 bits.
Pour les entiers : byte, short, int, long qui occupent respectivement 8, 16, 32 et 64 bits.


Contrairement aux langages de programmation de C ou C++, vous ne pouvez pas choisir entre une version « signée » ou pas. Tous les types permettent d'exprimer des nombres positifs et négatifs. Comme java utilisent le prinicipe du complément à 2, le zéro est considéré comme positifs.
Contrairement aux langages de programmation C ou C++, vous ne pouvez pas choisir entre une version « signée » ou pas. Tous les types permettent d'exprimer des nombres positifs et négatifs. Comme Java utilise le prinicipe du complément à 2, le zéro est considéré comme positif.


Ainsi, le type byte permet d'exprimer 2^8 nombres (car byte est codé sur 8 bits). Comme 2^8 = 256. Nous avons 256/2 = 128 et 0 et considéré comme positif. Un nombre byte et donc compris entre -128 (=2^7) et 127 (=2^7 -1 ).
Ainsi, le type byte permet d'exprimer 2^8=256 nombres (car un byte est codé sur 8 bits). Le nombre 0 est considéré comme positif, donc un byte est compris entre -128 (=2^7) et 127 (=2^7 -1).


Les nombres short sont compris entre -2^15 et 2^15 -1.
Les nombres short sont compris entre -2^15 et 2^15 -1.


Le même raisonnement est valide pour int et long.
Le même raisonnement est valide pour int et long.




Deux types de nombres à virgules flottantes sont disponibles float (32 bits) et double (64 bits). Ils utilisent le standard IEEE 754.
Deux types de nombres à virgules flottantes sont disponibles float (32 bits) et double (64 bits). Ils utilisent le standard IEEE 754.
Ligne 33 : Ligne 30 :


Attention, lorsque vous réalisez une division entre deux nombres entiers, vous obtenez toujours un nombre entier (éventuellement dont la partie décimale a été tronquée).
Attention, lorsque vous réalisez une division entre deux nombres entiers, vous obtenez toujours un nombre entier (éventuellement dont la partie décimale a été tronquée).



== Division par 0 ==
== Division par 0 ==
Ligne 43 : Ligne 39 :
== Les types objets ==
== Les types objets ==


Les types objets ont le désavantage de demander plus de ressources, un plus grand effort de programmation, mais offrent l'avantage d'utiliser des nombres d'une grandeur ou précision supérieures. Seul les ressources de la machine (la mémoire physique) limite la grandeur et la précsion.
Les types objets ont le désavantage de demander plus de ressources, un plus grand effort de programmation, mais offrent l'avantage d'utiliser des nombres d'une grandeur ou précision supérieures. Seules les ressources de la machine (la mémoire physique) limitent la grandeur et la précsion.


Vous ne pouvez pas utilisez les opérateurs classiques (+,-,*,/) pour BigInteger et BigDecimal. Vous devez recourir à leur version objet.
Vous ne pouvez pas utilisez les opérateurs classiques (+,-,*,/) pour BigInteger et BigDecimal. Vous devez recourir à leur version objet.

Version du 23 octobre 2008 à 16:51

Nombres
Image logo représentative de la faculté
Annexe
Leçon : Java


En raison de limitations techniques, la typographie souhaitable du titre, « Annexe : Nombres
Java/Annexe/Nombres
 », n'a pu être restituée correctement ci-dessus.

Dans cette page, nous traiterons de BigInteger et BigDecimal qui nécessitent Java 5 ou une version postérieur.

Java possède plusieurs types de nombres. Nous pouvons les classer selon plusieurs critères :

  • types primitifs ou types objets ;
  • nombres entiers ou nombres à virgules flottantes.

Les types primitifs

Pour les entiers : byte, short, int, long qui occupent respectivement 8, 16, 32 et 64 bits.

Contrairement aux langages de programmation C ou C++, vous ne pouvez pas choisir entre une version « signée » ou pas. Tous les types permettent d'exprimer des nombres positifs et négatifs. Comme Java utilise le prinicipe du complément à 2, le zéro est considéré comme positif.

Ainsi, le type byte permet d'exprimer 2^8=256 nombres (car un byte est codé sur 8 bits). Le nombre 0 est considéré comme positif, donc un byte est compris entre -128 (=2^7) et 127 (=2^7 -1).

Les nombres short sont compris entre -2^15 et 2^15 -1.

Le même raisonnement est valide pour int et long.

Deux types de nombres à virgules flottantes sont disponibles float (32 bits) et double (64 bits). Ils utilisent le standard IEEE 754.

Division entre deux nombres entiers

Attention, lorsque vous réalisez une division entre deux nombres entiers, vous obtenez toujours un nombre entier (éventuellement dont la partie décimale a été tronquée).

Division par 0

Diviser un entier par 0 entraîne une erreur. Diviser un nombre à virgule flottante est plus particulier.

Upcasting et dowcasting

Les types objets

Les types objets ont le désavantage de demander plus de ressources, un plus grand effort de programmation, mais offrent l'avantage d'utiliser des nombres d'une grandeur ou précision supérieures. Seules les ressources de la machine (la mémoire physique) limitent la grandeur et la précsion.

Vous ne pouvez pas utilisez les opérateurs classiques (+,-,*,/) pour BigInteger et BigDecimal. Vous devez recourir à leur version objet.