Javascript : Suite de nombre dans une variable non reconnue
Résolu
WakawaRider
Messages postés
16
Statut
Membre
-
WakawaRider Messages postés 16 Statut Membre -
WakawaRider Messages postés 16 Statut Membre -
Bonjour,
J'ai très peu de connaissance en informatique.
Je tente pour la première fois de créer une fonction pour calculer la moyenne des précipitations sur les 20 dernières années et l'année en cours pour un mois de l'année.
Les données sont obtenues avec une station météo amateur et le logiciel WsWIn32 par des tags de type %pluie_du_mois_X% envoyant une valeur numérique que je transforme en variable dans un fichier Javascript.
La variable est écrite sur 3 lignes car WsWin32 ne permet que 10 tags sur une même ligne.
La première valeur est celle de l'année en cours; elle est nulle si le mois n'est pas commencé.
Les suivantes sont les valeurs des années précédentes (n-1, n-2, ... jusqu'à n-20).
La station météo est en place depuis 2007 donc les années n-8 et suivantes sont inexistantes pour l'instant et remplacées par "--"
Voici où j'en suis :
J'ai droit à un superbe NaN que je n'arrive pas à résoudre.
Pourriez-vous corriger mes erreurs, soit sur la construction de la variable, soit sur la fonction elle-même ... voire les deux !...
Cordialement
J'ai très peu de connaissance en informatique.
Je tente pour la première fois de créer une fonction pour calculer la moyenne des précipitations sur les 20 dernières années et l'année en cours pour un mois de l'année.
Les données sont obtenues avec une station météo amateur et le logiciel WsWIn32 par des tags de type %pluie_du_mois_X% envoyant une valeur numérique que je transforme en variable dans un fichier Javascript.
La variable est écrite sur 3 lignes car WsWin32 ne permet que 10 tags sur une même ligne.
La première valeur est celle de l'année en cours; elle est nulle si le mois n'est pas commencé.
Les suivantes sont les valeurs des années précédentes (n-1, n-2, ... jusqu'à n-20).
La station météo est en place depuis 2007 donc les années n-8 et suivantes sont inexistantes pour l'instant et remplacées par "--"
Voici où j'en suis :
var pluies_de_janvier = "0.0,86.6,42.0,28.0,51.0,26.6,74.6,"+ "64.0,--,--,--,--,--,--,"+ "--,--,--,--,--,--,--"; function moyenne_pluie(pluie) { pluie = pluie.substring(0,pluie.indexOf("-")-1); if (pluie.substring(0,pluie.indexOf(",")) == "0.0") { var pluie = pluie.substring(4); }; var n = pluie.length; var somme = 0; for(i=0; i<n; i++) somme += pluie[i]; return somme/n; }; alert ("Moyenne de janvier : "+moyenne_pluie(pluies_de_janvier)+" mm" )
J'ai droit à un superbe NaN que je n'arrive pas à résoudre.
Pourriez-vous corriger mes erreurs, soit sur la construction de la variable, soit sur la fonction elle-même ... voire les deux !...
Cordialement
A voir également:
- Javascript : Suite de nombre dans une variable non reconnue
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Handicap / Accessibilté
- Afficher un tableau javascript en html ✓ - Forum Javascript
- Javascript arrondi - Forum Javascript
- Javascript arrondi après la virgule ✓ - Forum Windows
1 réponse
Salut WakawaRider,
Tu peux faire comme cela :
Dal
Tu peux faire comme cela :
var pluies_de_janvier = "0.0,86.6,42.0,28.0,51.0,26.6,74.6,"+ "64.0,--,--,--,--,--,--,"+ "--,--,--,--,--,--,--"; function moyenne_pluie(pluie) { // suppression du 0.0 initial éventuel pluie = pluie.replace(/^0\.0,/,""); // capture des chiffres var myRe = /(\d+\.\d+)/g; var myArray = pluie.match(myRe); // calcul de la moyenne des précipitations // contenues dans le tableau myArray var moyenne = 0; for (var i=0; i<myArray.length; i++) { moyenne = moyenne + Number(myArray[i]); } moyenne = moyenne / myArray.length; return moyenne; } alert ("Moyenne de janvier : "+moyenne_pluie(pluies_de_janvier)+" mm" )
Dal
J'ai intégré dans la fonction la remarque de Reivax962 ainsi que l'arrondi à1 chiffre après la virgule ce qui est suffisant pour cette valeur.
Est-ce correct comme ça ?
Puisque j'ai la chance d'avoir affaire à des interlocuteurs visiblement très compétents, je vous demande comment intégrer deux choses de plus dans cette fonction :
- comment tenir compte du fait qu'il est possible qu'il ne pleuve pas cette année et les suivantes pendant le mois en cours, donc intégrer cette valeur nulle à la moyenne ?
-Comment modifier la moyenne en ne tenant compte de la variable du mois en cours qu'à partir de la fin du mois seulement (disons le 28 du mois pour simplifier) pour ne pas fausser le résultat ?
Merci par avance
Cordialement
Dans le code "0.0" n'est ignoré dans le calcul que s'il est la première valeur sur la ligne. Dès lois, je ne comprends pas bien ce que tu veux faire.
Le if (myArray.length > 0) devrait être placé autrement et avec un code d'erreur utile permettant à la fonction appelante de savoir que quelque chose s'est mal passé car on ne dispose d'aucun chiffre pour calculer la moyenne (par exemple en renvoyant -1).
Dal