Separateur de decimal par defaut

Le
sloubi
Bonjour,
J'ai une application ou l'utilisateur peut saisir des float dans des <INPUT>

J'ai besoins de localiser mon application, c'est a dire des point ou des
virgules selon le pays pour l'affichage et le parsing.

Je connais la methode crado qui consiste a faire un remplace suivant le
cas mais:
- c'est crade
- c'est pas performant dans la mesure ou je manipule tout un tas de données.

Y'a-t-il un moyen de forcer le separateur de decimal dans le cas d'un
parseFLoat par exemple?

Merci de vos réponses

Francillo
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #19671751
Le 6/30/09 7:47 PM, sloubi a écrit :
Bonjour,
J'ai une application ou l'utilisateur peut saisir des float dans des
<INPUT>



Qu'est-ce que ça peut bien être des 'float' ?
(mon Larousse doit être trop vieux ?)

J'ai besoins de localiser mon application, c'est a dire des point ou des
virgules selon le pays pour l'affichage et le parsing.

Je connais la methode crado qui consiste a faire un remplace suivant le
cas mais:



La méthode crado consiste à faire un replace systématique (là où les
champs sont susceptibles de recevoir des nombres), ce qui est un
machin-truc qui ne coute pas cher en temps de traitement.


function pointe(quoi){quoi.value=quoi.value.replace(',','.');}
<input onchange="pointe(this);">

- c'est crade
- c'est pas performant dans la mesure ou je manipule tout un tas de
données.



??
tes données sont avec séparateur 'point'
épivoilà !

Y'a-t-il un moyen de forcer le separateur de decimal dans le cas d'un
parseFLoat par exemple?



Non(*) mais on s'en moque maintenant que tu as :
- tes données
- et tes inputs
avec 'point' comme séparateur.

Non ?

(*)
function parserLesFloats(num) {
return parseFloat(num.replace(',','.'));
}


Maintenant, il faudra m'esspliquer pourquoi tu as besoin de parseFloat()
si de ttes façons tu ne traites de des nombres flottants "normaux" ?


D'un coup d'un seul (ou presque) :

function total() {
var t = '',
f = document.monForm.elements,
n = f.length;
while(n--) if(f[n].type=='text' && f[n].value.length>0)
t += f[n].value + '+';
t += '0';
alert('total = ' + eval(t.replace(/,/g,'.')));
}

--
sm
Olivier Miakinen
Le #19672081
Bonjour,

Le 30/06/2009 19:47, sloubi a écrit :

J'ai une application ou l'utilisateur peut saisir des float dans des <INPUT>



As-tu défini précisément la syntaxe de ce champ, ou les différentes
syntaxes selon la langue choisie ?

Par exemple : acceptes-tu des espaces ou des virgules comme séparateurs
de milliers ; des divisions des chiffres ailleurs qu'aux milliers, comme
en Inde ; des chiffres chinois, romains... ?

J'ai besoin de localiser mon application, c'est a dire des point ou des
virgules selon le pays pour l'affichage et le parsing.



D'accord. Et donc le nombre « un million » s'écrira :
1 000 000 pour la France
1,000,000 pour les États-Unis
10,00,000 pour l'Inde et le Pakistan

Une question annexe : puisque tu localises par pays, comment gères-tu
les pays multilingues ?

Je connais la methode crado qui consiste a faire un remplace suivant le
cas mais:
- c'est crade
- c'est pas performant dans la mesure ou je manipule tout un tas de données.

Y'a-t-il un moyen de forcer le separateur de decimal dans le cas d'un
parseFLoat par exemple?



La fonction parseFloat est normalisée, et les nombres qu'elle accepte
ont un format « informatique » bien fixé. Je viens d'ailleurs de
découvrir en lisant la norme qu'elle est censée accepter des nombres
tels que "Infinity", "+Infinity" et "-Infinity".

Mais bien entendu, rien ne t'empêche de redéfinir cette fonction (ou une
d'un autre nom) afin qu'elle tienne compte du cahier des charges que tu
auras défini pour chacune des langues supportées.
Publicité
Poster une réponse
Anonyme