Rechercher : dans
Par :

[java] Nombre trop grand pour long

Dernière réponse le 4 mar 2009 à 01:09:34 guigui, le 2 mar 2009 à 22:33:55 
 Signaler ce message aux modérateurs

Bonjour,

eclipse refuse de me prendre :

long c=600851475143;

à cause de la taille du nombre, alors que d'après mes recherches ça devrait être bon ...

Quelqu'un a une idée ?
Utiliser une autre variable que long ?

Merci

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « [java] Nombre trop grand pour long » dans :
Renommer plusieurs fichiers en batch VoirLe fait de renommer un grand nombre de fichiers peut très vite devenir fastidieux. Heureusement, il existe des outils permettant d'automatiser cette tâche dans un grand nombre de cas : Fonctionnalités natives Utilisation d'un programme...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Représentation des nombres entiers et réels VoirReprésentation d'un nombre dans un ordinateur On appelle représentation (ou codification) d'un nombre la façon selon laquelle il est décrit sous forme binaire. La représentation des nombres sur un ordinateur est indispensable pour que celui-ci...

1

Marco la baraque, le 2 mar 2009 à 23:08:50
  • +1

Bonsoir,
Essaie avec long c=600851475143L;

Cordialement, rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque

2

danimo, le 3 mar 2009 à 04:09:17

Salut,

Alors que;
La valeur MINI d'un LONG:
>>>> long mon_long = Long.MIN_VALUE;
La valeur minimale d'un long est -9223372036854775808


La valeur MAXI d'un LONG:
>>>> long mon_long = Long.MAX_VALUE;
La valeur maximale d'un long est 9223372036854775807

C'est étrange, et Eclipse n'y est pour rien!

Celà se produit lorsque la valeur est > 2147483647 qui est la valeur maxi d'un Integer. (par exemple 2147483648)

Même chose avec -2147483649 qui est la valeur mini d'un Integer +1

D'ailleurs le message dit bien Integer number too large...

Sauf avis contraire, pour moi c'est un bug Javac.

N'oublions donc pas le (L) ou (l) indiqué par Marco.

Cordialement,

Dan

Répondre à danimo

3

Marco la baraque, le 4 mar 2009 à 00:52:19

Bonsoir,
Non, ce n'est pas un bug d'après moi.

Le compilateur alloue lui-même la mémoire comme il le souhaite.
Quand tu fais System.out.println("toto");, une instance de String contenant la chaîne "toto" est crée, alors que tu ne le spécifies pas explicitement.
De même, quand tu fais double d = 12.03;, ce n'est pas un double qui est alloué, mais un float.
Si tu fais long l = 12;, c'est un int qui est créé. Pour indiquer au compilateur qu'on souhaite explicitement créer un long, il est nécessaire d'ajouter le "L", comme le spécifie la documentation (pour un double on utilisera "d" pour empêcher l'utilisation d'un float).

C'est un truc à savoir, mais ce n'est pas un bug. J'imagine que c'est fait de manière à optimiser un maximum l'espace alloué.

Cordialement, rtfm and jfgi
Simple "merci" makes helping people happy :)

Répondre à Marco la baraque

4

 danimo, le 4 mar 2009 à 01:09:34

Salut,

Dans le fond, je n'étais pas vraiment convaicu que c'était un bug...

Cordialement,

Dan

Répondre à danimo