Int ou float ??

Résolu
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 - 21 mai 2008 à 00:42
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019 - 23 mai 2008 à 00:31
Salut

j'ai fait comme ca:
int t1=0,i1=0,P1=0;
-------------------------------------------------------------------------
i1 = Integer.parseInt(MonText.getText().trim());// rendre le contenu de "MonText" en entie.
--------------------------------------------------------------------------
aprés l'initialisation j'affecte
i1=2.2
et P1=300.02
et
    t1=i1*P1;

MAIS
l'errur ci dessus ce lance;
------------------------------------------------------
java.lang.NumberFormatException: For input string: "2,2"

...
....etc
------------------------------------------------------
peut etre il faut convertire le contenu de "MonText" en float
et il une autre manier de passer vers float?
et comment en ecrit la vergule dans les nombre réél est ce que avec le point (.) ou avec  la vergule nomramel (,) ?
MERCI

% Mauvais Sens %

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 mai 2008 à 06:56
Salut,

Forcément, "2,2" n'est ni un float, et encore moins un entier !

Convertit le d'abord en un nombre pouvant être convertit (remplace la virgule de notre format français, en un point du format américain, ce qui sera déjà plus simple à convertir !).

Ensuite, convertit ce "nouveau" nombre en Float, et récupère sa valeur entière :

i1 = Float.parseFloat(MonText.getText().trim().replace(",", ".")).intValue();
______________________________________
DarK Sidious
3
Utilisateur anonyme
21 mai 2008 à 09:01
Salut,

         String MonText = "2.2";
         Float f = new Float(MonText);// covertir le contenu de "MonText" en Float.
         System.out.println("MonText/f = " + MonText + "/" + f);
         float i1 = f.floatValue();
         System.out.println("i1 = " + i1);
         float P1=300.02F;
         System.out.println("P1 = " + P1);
         float t1=i1*P1;
         System.out.println("t1 = " + t1);
     
Cordialement,
...\ Dan /...
3
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
22 mai 2008 à 18:54
Sans même faire appel à String.replace(...), il suffisait d'indiquer la "Locale" à utiliser pour la conversion (Locale.US ou Locale.FRANCE par exemple).


Ceci dit, si c'est utilisateur qui a tapé la valeur, il a peut-être lui-même saisi une virgule ou un point, et String.replace(".", ",") permet de ne pas tenir compte de cette différence.


Les fonctions parseXxx()  ou les constructeurs comme Float(String) utilisent par défaut la locale du système local. Cette locale n'est pas nécessairement la locale anglophone (cela dépend des paramètres de démarrage de la VM Java ou de son environnement dans un navigateur ou une ligne de commande de l'espace utilisateur local), mais on peut préciser explicitement cette locale (ou encore le paramètre de codage de texte qui n'est pas nécessairement la page de code 1252 ou même ISO 8859-1, même sous Windows en version française! Cela dépend aussi de l'OS support et de paramères d'installation de la VM)
La seule chose qui semble sure est que les locales US et française seront supportées, de même que les codages US-ASCI, ISO-8859-1, et Unicode UTF-8 ou UTF-16, ainsi qu'un codage spécifique à la plateforme locale. Tout le reste n'est pas garanti et varie d'une VM à l'autre ou d'un utilisateur à l'autre (et aussi de l'installation ou non des librairies d'internationalisation lors de l'installation de Java sur le poste client ou sur un serveur d'application JSP)

Pour répondre à ta dernière question: ce n'est donc ni forcément le point ni la virgule, car cela dépend de la "Locale" utilisée et c'est à toi de la préciser si nécessaire dans ton code (méfies-toi des "Locales" par défaut, si tu l'oublies c'est le meilleur moyen d'avoir une appli qui fonctionne chez certains et pas chez d'autres: nombre d'applis américaines supposent une locale US mais c'est souvent faux sur nos PCs ou Macs ou même nos serveurs d'applications). Consulte les Javadoc pour voir quelles fonctions de conversion de texte utilisent la locale par défaut et comment préciser une autre locale si nécessaire.
3
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 4
21 mai 2008 à 13:43
SAlut
MERCI beacoup ca a marché
Thanks a lot
@+

% Mauvais Sens %
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 4
23 mai 2008 à 00:20
Salut
wow merci beaucoup [auteur/VERDYP/678937.aspx verdy_p]  pour la grand utile reponse
MAIS est ce que je vais l'appeler just comme ça :
Locale.FRANCE
je sais pas ce que je doit faire, je suis un débutant en JAVA.
une autre question et il possible d'utiliser cette "locale" dans le cas ou j'ai tapper un
faut mot ou une fausse phrase dans une zone de text, comme au niveau du word ??
c'est a dire si j'ai tapper un faut mot, il me donne la possibilité de la correcté.

MERCI

% Mauvais Sens %
0
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
23 mai 2008 à 00:31
regarde javadoc pour la classe de base du JRE : java.util.Locale
ensuite, regarde les classes qui réalisent les conversions de chaines: partout où cela peut dépendre d'une locale, les méthodes qui utilisaient une locale par défaut acceptent aussi qu'on précise la locale à utiliser.
Donc:

import java.util.Locale;
...
puis référence Locale.US ou Locale.FRANCE explicitement suivant ce que tu attends.

Fais la même chose concernant les encodages: le codage local natif du système n'est pas forcément portable, notamment celui utilisé pour coder les noms de fichiers locaux, ou pour écrire dans des ficheirs texte locaux. Il faut souvent préciser une paramètre optionnel: je conseille vivement de ne plus utiliser que "UTF-8" et d'abandonner le codage système natif par défaut qui persiste uniquement pour compatibilité. D'ailleurs je conseille aussi de compiler le code Java avec les warnings activés sur les méthodes obsolètes qui utilisent encore un codage système local par défaut, sachant que le jeux de caractère natif 8 bits local diffère d'un pays à l'autre même pour la même version de Windows: le même programme avec le même source et compilé de façon identique pour la même version de java risque de ne pas marcher pareil d'une machine à l'autre suivant la Locale alors même que le programme manipule exactement les mêmes fichiers de données et se connecte aux mêmes serveurs distants (la Locale comprend des paramètres dépendant de choix de 'lu'ilisteur courant ou de paramètres système purement locaux comme la langue, l'écriture utilisée, le jeu de caractère natif du système de fichier local, les conventions sur les nombres et dates, etc.)
0
Rejoignez-nous