Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2011, 23h30   #1
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Par défaut Caster un nombre de entier vers chaine de caractère

Bonjour,

Je cherche à caster un nombre de entier vers chaine de caractère

Code :
1
2
3
4
5
6
7
8
9
10
11
 
 
function a(){
matr=0002;
str=12;
 
 
alert(matr);
 
 
}
Ceci m'affiche 2 alors moi je veux 0002


Merci de votre aide
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/11/2011, 23h37   #2
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
Bah ce n'est pas un nombre qu'il faut utiliser mais une chaine de caratères :o

Si tu traites un nombre et ensuite tu veux l'afficher, c'est seulement au moment de l'afficher que tu rajoutes les zéros :o
Code :
1
2
3
4
5
6
7
8
 
function addZeros(num, strLength) {
   return new Array(strLength-(num+'').length+1).join(0)+num;
}
 
addZeros(234, 4) =>"0234"
addZeros(2,4) =>"0002"
addZeros(45,10) => "0000000045"
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 23h48   #3
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Merci d'abord pour votre réponse , mais essaye ce nombre matr=0012;

il va donner comme résultat 0010



Citation:
Envoyé par dukej Voir le message
Bah ce n'est pas un nombre qu'il faut utiliser mais une chaine de caratères :o

Si tu traites un nombre et ensuite tu veux l'afficher, c'est seulement au moment de l'afficher que tu rajoutes les zéros :o
Code :
1
2
3
4
5
6
7
8
function addZeros(num, strLength) {
   return new Array(strLength-(num+'').length+1).join(0)+num;
}

addZeros(234, 4) =>"0234"
addZeros(2,4) =>"0002"
addZeros(45,10) => "0000000045"
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 27/11/2011, 23h53   #4
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
Citation:
Envoyé par ghir_ana Voir le message
Merci d'abord pour votre réponse , mais essaye ce nombre matr=0012;

il va donner comme résultat 0010
Mais as tu compris que 0012 n'est pas un nombre au sens que tu le souhaites :o.

en écrivant 0012, tu le déclares en octal, comme il y a 0 devant il est en base octale.
Il ne faut surtout pas que tu aies 0012 déclaré tel, c'est simplement 12 :o
Donc tu travailles avec des nombres NORMAUX et lors de l'affichage tu transformes.

Sinon je peux te sécuriser la fonction hein :o
Code :
1
2
3
4
5
6
 
function addZeros(num, strLength) {
   return new Array(strLength-(parseInt(num,10)+'').length+1).join(0)+num;
}
 
addZeros(0012,10);
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 00h03   #5
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Toujours le même résultat 0010 !


Citation:
Envoyé par dukej Voir le message
Mais as tu compris que 0012 n'est pas un nombre au sens que tu le souhaites :o.

en écrivant 0012, tu le déclares en octal, comme il y a 0 devant il est en base octale.
Il ne faut surtout pas que tu aies 0012 déclaré tel, c'est simplement 12 :o
Donc tu travailles avec des nombres NORMAUX et lors de l'affichage tu transformes.

Sinon je peux te sécuriser la fonction hein :o
Code :
1
2
3
4
5
6
 
function addZeros(num, strLength) {
   return new Array(strLength-(parseInt(num,10)+'').length+1).join(0)+num;
}
 
addZeros(0012,10);
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 28/11/2011, 00h15   #6
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
Citation:
Envoyé par ghir_ana Voir le message
Toujours le même résultat 0010 !
Code :
1
2
3
4
 
function addZeros(num, strLength) {
   return new Array(strLength-(parseInt(num,'',10)+'').length+1).join(0)+parseInt(num+'',10);
}
En fait le problème c'est que tu déclares ton nombre en base octale (comme je l'ai expliqué plus haut) en le commencant par 0, déjà arrête cette mauvaise pratique. Un nombre en décimal commence par un chiffre autre que 0.

Je t'ai corrigé la fonction afin qu'elle prenne en compte ton problème, mais ça reste moche de devoir convertir le nombre en chaine de caractères pour ensuite le repasser en int :/
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 00h21   #7
 
Inscription : septembre 2008
Messages : 114
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 114
Points : -49
Points : -49
Une application qui existe déjà à comme paramètre 6 nombres et qui débute par des zéros , donc j'ai rien à changer . il faut avoir une solution !!!!

Merci de votre aide .

Citation:
Envoyé par dukej Voir le message
Code :
1
2
3
4
 
function addZeros(num, strLength) {
   return new Array(strLength-(parseInt(num,'',10)+'').length+1).join(0)+parseInt(num+'',10);
}
En fait le problème c'est que tu déclares ton nombre en base octale (comme je l'ai expliqué plus haut) en le commencant par 0, déjà arrête cette mauvaise pratique. Un nombre en décimal commence par un chiffre autre que 0.

Je t'ai corrigé la fonction afin qu'elle prenne en compte ton problème, mais ça reste moche de devoir convertir le nombre en chaine de caractères pour ensuite le repasser en int :/
ghir_ana est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 28/11/2011, 01h54   #8
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
Citation:
Envoyé par ghir_ana Voir le message
Une application qui existe déjà à comme paramètre 6 nombres et qui débute par des zéros , donc j'ai rien à changer . il faut avoir une solution !!!!

Merci de votre aide .
Une application javascript ne peut pas avoir de nombre(type number) avec une valeur décimale commençant par zéro.

S'il s'agit d'une application externe et que tu reçois les données, par exemple par une requête ajax, elles seront toujours sous la forme de string.

Si ces données viennent d'un langage coté serveur comme du php, alors il te suffit de mettre des guillemets autour de ta variable.

Code php :
var valeur = <?php echo $var; ?>;

devient :

Code php :
var valeur = "<?php echo $var; ?>";
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 03h39   #9
Membre expérimenté
 
Duke Jikel
Inscription : mai 2010
Messages : 340
Détails du profil
Informations personnelles :
Nom : Duke Jikel

Informations forums :
Inscription : mai 2010
Messages : 340
Points : 548
Points : 548
Citation:
Envoyé par ghir_ana Voir le message
Une application qui existe déjà à comme paramètre 6 nombres et qui débute par des zéros , donc j'ai rien à changer . il faut avoir une solution !!!!

Merci de votre aide .
ben maintenant tu l'as ta solution
dukej est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h50.


 
 
 
 
Partenaires

Hébergement Web