Résultats sur des calculs me donne des NaN
Résolu
JLuc69
-
Popoï_ Messages postés 179 Statut Membre -
Popoï_ Messages postés 179 Statut Membre -
Bonjour,
Je n'arrive pas à faire des calculs en javascript !
Le premier alert est bon, mais le reste me renvoie des NaN :(
Mon code :
function checkmat()
{
var diametrepercage = document.form1.dia_tr.value - document.form1.dia_fr.value - (2 * document.form1.surep.value);
alert(diametrepercage);
var circonference = parseFloat(diametrepercage)*Math.pi;
alert(circonference);
var nombredetrous = Math.floor(parseFloat(circonference)/document.form1.dia_fr.value);
alert(nombredetrous);
document.form1.nbtrous.value = nombredetrous;
var angle = (360/nombredetrous)/2;
alert(angle);
var matiere = ((Math.round((diametrepercage/2)*Math.sin(angle*Math.pi/180)*1000)/1000)*2)-document.form1.dia_fr.value;
document.form1.mat.value = matiere;
alert(nombredetrous);
alert(matiere);
}
Un bout de mon formulaire :
<input type="text" id="dia_fr" name="dia_fr" title="Diamètre de l'outil, ne peut être égal à zéro ou négatif." size="10" value="<?php if(isset($_POST['dia_fr'])) echo $dia_fr; else echo 3; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Diamètre du foret</label><?php if(isset($erreur['dia_fr'])) echo "<span style='color:red;float:right;'>" . $erreur['dia_fr'] . '</span>'; ?><br />
<input type="text" id="dia_tr" name="dia_tr" title="Diamètre du trou à réaliser." size="10" value="<?php if(isset($_POST['dia_tr'])) echo $dia_tr; else echo 50; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Diamètre à réaliser</label><?php if(isset($erreur['dia_tr'])) echo "<span style='color:red;float:right;'>" . $erreur['dia_tr'] . '</span>'; ?><br />
<input type="text" id="surep" name="surep" title="suépaisseur à laisser entre le diamètre à faire et le diamètre du trou." size="10" value="<?php if(isset($_POST['surep'])) echo $surep; else echo 0.2; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Surépaisseur</label><?php if(isset($erreur['surep'])) echo "<span style='color:red;float:right;'>" . $erreur['surep'] . '</span>'; ?><br />
<input type="text" id="mat" name="mat" disabled="disabled" size="10" value="<?php if(isset($_POST['mat'])) echo $mat; else echo 0.251; ?>"/> <label style="display:block; width:200px; float:left;">Minimum matière</label><br />
<input type="text" id="nbtrous" name="nbtrous" disabled="disabled" size="10" "/> <label style="display:block; width:200px; float:left;">Nombre de trous</label><br />
D'où cela peut il provenir ?
Merci d'avance à toutes les bonnes volonté
Je n'arrive pas à faire des calculs en javascript !
Le premier alert est bon, mais le reste me renvoie des NaN :(
Mon code :
function checkmat()
{
var diametrepercage = document.form1.dia_tr.value - document.form1.dia_fr.value - (2 * document.form1.surep.value);
alert(diametrepercage);
var circonference = parseFloat(diametrepercage)*Math.pi;
alert(circonference);
var nombredetrous = Math.floor(parseFloat(circonference)/document.form1.dia_fr.value);
alert(nombredetrous);
document.form1.nbtrous.value = nombredetrous;
var angle = (360/nombredetrous)/2;
alert(angle);
var matiere = ((Math.round((diametrepercage/2)*Math.sin(angle*Math.pi/180)*1000)/1000)*2)-document.form1.dia_fr.value;
document.form1.mat.value = matiere;
alert(nombredetrous);
alert(matiere);
}
Un bout de mon formulaire :
<input type="text" id="dia_fr" name="dia_fr" title="Diamètre de l'outil, ne peut être égal à zéro ou négatif." size="10" value="<?php if(isset($_POST['dia_fr'])) echo $dia_fr; else echo 3; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Diamètre du foret</label><?php if(isset($erreur['dia_fr'])) echo "<span style='color:red;float:right;'>" . $erreur['dia_fr'] . '</span>'; ?><br />
<input type="text" id="dia_tr" name="dia_tr" title="Diamètre du trou à réaliser." size="10" value="<?php if(isset($_POST['dia_tr'])) echo $dia_tr; else echo 50; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Diamètre à réaliser</label><?php if(isset($erreur['dia_tr'])) echo "<span style='color:red;float:right;'>" . $erreur['dia_tr'] . '</span>'; ?><br />
<input type="text" id="surep" name="surep" title="suépaisseur à laisser entre le diamètre à faire et le diamètre du trou." size="10" value="<?php if(isset($_POST['surep'])) echo $surep; else echo 0.2; ?>" onchange="checkmat()" /> <label style="display:block; width:200px; float:left;">Surépaisseur</label><?php if(isset($erreur['surep'])) echo "<span style='color:red;float:right;'>" . $erreur['surep'] . '</span>'; ?><br />
<input type="text" id="mat" name="mat" disabled="disabled" size="10" value="<?php if(isset($_POST['mat'])) echo $mat; else echo 0.251; ?>"/> <label style="display:block; width:200px; float:left;">Minimum matière</label><br />
<input type="text" id="nbtrous" name="nbtrous" disabled="disabled" size="10" "/> <label style="display:block; width:200px; float:left;">Nombre de trous</label><br />
D'où cela peut il provenir ?
Merci d'avance à toutes les bonnes volonté
A voir également:
- Résultats sur des calculs me donne des NaN
- Resultats foot - Télécharger - Vie quotidienne
- Comment calculer la moyenne sur excel - Guide
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Musique / Radio / Clip
- Citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). ✓ - Forum LibreOffice / OpenOffice
- Lexer resultats - Télécharger - Sport
4 réponses
Cela vient de tes parseFloat, si 'diametrePercage' et 'circonference' ne sont pas des chaines de caractères représentant un float valide alors parseFloat te renverra NaN ("Not a Number")
La confiance n'exclut pas le contrôle
La confiance n'exclut pas le contrôle
Je les ai tous enlever, et à part le premier alert() qui me renvoie une valeur, tous les autres me renvoie "NaN".
Je comprend pas ce qui se passe !
Est ce à cause des fonctions Math ?
Je comprend pas ce qui se passe !
Est ce à cause des fonctions Math ?
Bon j'avoue que je connais pas trop JavaScript...
J'essaierai déjà de respecter la casse avec Math.PI mais sinon tu écris parseFloat(diametrePercage), je vois pas pourquoi ça marcherait, déjà je pense que ce serait plutôt diametrePercage.parseFloat qu'il faut écrire, mais en fait diametrePercage c'est le résultat du calcul précédent donc ce n'est pas une chaine de caractères mais un nombre !
J'essaierai déjà de respecter la casse avec Math.PI mais sinon tu écris parseFloat(diametrePercage), je vois pas pourquoi ça marcherait, déjà je pense que ce serait plutôt diametrePercage.parseFloat qu'il faut écrire, mais en fait diametrePercage c'est le résultat du calcul précédent donc ce n'est pas une chaine de caractères mais un nombre !
Ca y est, c'est effectivement Math.pi et lui seul qui met le boxon.
J'ai remplacé Math.pi par la valeur 3.1415926535897932384626433832795 et tout marche.
Par contre, je ne sais pas pourquoi cette fonction déconne :/
Merci tout de même
J'ai remplacé Math.pi par la valeur 3.1415926535897932384626433832795 et tout marche.
Par contre, je ne sais pas pourquoi cette fonction déconne :/
Merci tout de même