Aller au contenu

[Résolut] récupérer la décimale d'un nombre


pyrro

Recommended Posts

Voila je voudrais récupérer mon entier et isoler chacun de ces chiffres pour effectuer des calculs sur chacun de ces chiffres. Comme tous les chiffres seront saisis dans un seul editText, on ma donc suggérer de diviser le nombre par 10 et récupérer la décimale a chaque fois.

Mais voila j'ai un petit problème :

Quand je prend par exemple l'entier 1234 :

1234/10 = 123.4

Mais si je récupère le décimal comme sa :

b = a - (int)a // a étant l'entier diviser par 10

J'obtient b = 0.4000153, or je voudrais juste le chiffre 4 tous seul pour le classer dans un tableau.

Ma question est donc comment peut on récupérer uniquement la première décimale d'un nombre ? Je voudrais b = 4

PS : ou alors si quelqu'un connait un moyen plus pratique pour isoler chaque chiffres d'un entier et les classer dans un tableau

Un petit schéma pour ceux qui n'aurait pas compris se que je veut faire :

Mettre l'entier 12345 dans un tableau genre :

int tableauEntier[] = {1,2,3,4,5};

tableau [1][2][3][4][5]

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Salut!

Je pourrais te conseiller de faire un truc du style:

int tonNombre = 123456;

//on convertit ton nombre en string
String txtNombre = ""+tonNombre;

/*On initialise un tableau de string qui contiendra chaque partie découpée*/
String[] decoupe = txtNombre.split("");

/*On instancie un tableau d'int qui comptera autant de cases que de parties découpées*/
int [] tableau = new int[decoupe.length];

/*On initialise une variable i qui ira de 0 jusqu' au nombre de cases en augmentant de 1 à chaque tour.*/
for (int i=0; i<decoupe.length; i++)
{
\*On récupère la case i du tableau, on la reconvertit en int.*/
     int nombreDecoupe = Integer.parseInt(decoupe[i]);
/*on la range dans le tableau d'int*/
     tableau[i]=nombreDecoupe;
}

Un truc de ce style...

Qu'est ce que tu en penses...? :)

Edit: J'ai ajouté les commentaires...

Lien vers le commentaire
Partager sur d’autres sites

@pyrro:

split est une fonction qui sert à découper une string...

en gros, on lui dit "tu prends la string et tu coupes dès que tu trouves ce qui est entre parenthèses". et dans ton cas, on met "" comme ça il coupe à chaque caractère. et ça te retourne un tableau de string qui contient chaque partie coupée. après, on prend chaque partie et on la transforme en int.

J'espère que ça te conviendra...

Lien vers le commentaire
Partager sur d’autres sites

Pas mieux.

J'ai un peu zappé le début du post #1 et pas bien compris que tu voulais faire des traitements sur les composantes chiffre de ton nombre. :)

Dans ce cas oui, un bon vieux split() et la conversion façon Kricek qu'on doit pouvoir simplifier.

Lien vers le commentaire
Partager sur d’autres sites

oups! désolé, j'étais au cinoche ce soir et j'ai pas suivi la suite... donc pour le "s":

La ligne "for (String s : decoupe)",

veut dire: "pour chaque string contenue dans decoupe et que l'on va temporairement appeler s"... cela permet de faire un traitement pour chaque morceau découpé.

Concernant decoupe: i est un int, une variable qui commence à 0 et qui augmente de 1 à chaque tour. et decoupe veut dire: dans le tableau decoupe, je voudrais ce qui se trouve dans la case i.

En espérant avoir éclairci... bien que jep l'ai déjà fait avant moi...

Bonne soirée les gars.

et tiens nous au courant pyrro...

Sent from my GT-I9000 using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

oula... oui, désolé, en fait j'étais parti sur un for (String s:decoupe) mais j'ai fait un for(int i...) lol. Bon, vais prendre un café et j'essayé de revenir après pour expliquer la boucle for... :-)

Edit: J'ai ajouté les commentaires dans mon premier post... désolé.

Sent from my GT-I9000 using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

J'ai essayer ton code mais il me fait une erreur a cette ligne : int nombreDecoupe = Integer.parseInt(decoupe);

Est il possible que tu m'explique un peu ton code car j'avoue que [color=red][b]sa[/b][/color] m'embrouille un peu ?

Lien vers le commentaire
Partager sur d’autres sites

j'ai ajouté les commentaires dans mon premier post.

Quelle est l'erreur qu'il te signale? tu peux nous faire un copier coller, stp?

La ligne "int nombreDecoupe = Integer.parseInt(decoupe);" regarde dans le tableau decoupe, dans la case n° "i", prend la valeur contenue dans la case et essaye de la transformer en int. si tu as une erreur, ça peut être plusieurs choses... erreur de codage, ou bien ce qui est dans la case n'est pas un nombre, ou bien un "Nullpointer exception" au niveau du nombre de cases, etc...

bref, peux tu nous laisser un copier coller de ton logcat, stp? juste les lignes rouges...

Sent from my GT-I9000 using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Déjà j'ai oublier de dire que pour l'instant je le fait sous un projet java normal je le porterais a la fin sur android mais cela ne change rien pour le programme.

Quand je lance ton code, j'obtiens dans la console java:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at test.main(test.java:51)

la ligne 51 étant celle du fameux decoupe.

En revanche quand je remplace i par 1 par exemple cela marche et m'affiche dans la console : 1111111 qui est le nombre de découpe qui est 7 en comptant le ""

Lien vers le commentaire
Partager sur d’autres sites

alors tu as une erreur "numberFormatException".

Cette erreur vient du fait qu'à cette ligne, il essaye de convertir en int quelque chose qui n'est pas un nombre...

Qu'est ce que tu as entré comme nombre dans ton champs?

Pour ta question au sujet de java, pour l'instant, les fonctions utilisées dans le code que je t'ai donné sont bien du java... donc pas de souci de compatibilité...

Sent from my GT-I9000 using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Pour savoir ce qu'il essaye de convertir, ajoute une ligne dans ton code:

System.Out.println("Nombre à convertir : \""+decoupe);

mets cette ligne juste après le code"for..." et dis moi le résultat... mais apparemment, il essaye de convertir "" en int... faut voir si ça intervient au début ou à la fin...

Sent from my GT-I9000 using Tapatalk

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...