Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Separateur de decimal par defaut

2 réponses
Avatar
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

2 réponses

Avatar
SAM
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.

<input onchange="this.value=this.value.replace(',','.');">

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
Avatar
Olivier Miakinen
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.