CALCULATRICE SIMPLE

cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009 - 26 juin 2006 à 17:49
 hamdi - 1 juin 2015 à 16:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/38287-calculatrice-simple

<!DOCTYPE html>
<html>
<head ><title> calculatrice </title>
<meta charset="UTF-8">
<style>
input{font-weight:bold;}
input[type=button]{width:25px;}
input[type=text]{width:103px; text-align:right; padding-right:5px;}
input[type=reset]{width:112px;}
</style>
<script>
var a, b;
var SelectedOp="";
var OpClicked=false;
function entrer(x){
switch (x) {
case '1': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="1";
else document.getElementById("label").value+="1";
break;
case '2': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="2";
else document.getElementById("label").value+="2";
break;
case '3': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="3";
else document.getElementById("label").value+="3";
break;
case '4': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="4";
else document.getElementById("label").value+="4";
break;
case '5': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="5";
else document.getElementById("label").value+="5";
break;
case '6': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="6";
else document.getElementById("label").value+="6";
break;
case '7': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="7";
else document.getElementById("label").value+="7";
break;
case '8': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="8";
else document.getElementById("label").value+="8";
break;
case '9': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="9";
else document.getElementById("label").value+="9";
break;
case '0': if (document.getElementById("label").value=="0" || OpClicked==true) document.getElementById("label").value="0";
else document.getElementById("label").value+="0";
break;
case '.': document.getElementById(".").disabled=true;
document.getElementById("label").value+=".";
break;

}
OpClicked=false;
}

function faire(x){
document.getElementById(".").disabled=false;
OpClicked=true;
SelectedOp=x;
a=document.getElementById("label").value;
}

function calculer(){
var b=document.getElementById("label").value;
switch (SelectedOp) {
case '+': document.getElementById("label").value=parseFloat(a)+parseFloat(b); break;
case '-': document.getElementById("label").value=parseFloat(a)-parseFloat(b); break;
case '*': document.getElementById("label").value=parseFloat(a)*parseFloat(b); break;
case '/': if (b!=0) document.getElementById("label").value=parseFloat(a)/parseFloat(b);
else document.getElementById("label").value="impossible sur 0 !";
break;
}
SelectedOp="";
}

</script>
</head>

<body>
<form>
<input type="text" value="0" id="label" readonly > <br/>
<input type="button" value="1" id="1" onclick="entrer('1');">
<input type="button" value="2" id="2" onclick="entrer('2');">
<input type="button" value="3" id="3" onclick="entrer('3');">
<input type="button" value="+" id="+" onclick="faire('+');"><br/>
<input type="button" value="4" id="4" onclick="entrer('4');">
<input type="button" value="5" id="5" onclick="entrer('5');">
<input type="button" value="6" id="6" onclick="entrer('6');">
<input type="button" value="-" id="-" onclick="faire('-');"><br/>
<input type="button" value="7" id="7" onclick="entrer('7');">
<input type="button" value="8" id="8" onclick="entrer('8');">
<input type="button" value="9" id="9" onclick="entrer('9');">
<input type="button" value="*" id="*" onclick="faire('*');"><br/>
<input type="button" value="0" id="0" onclick="entrer('0');">
<input type="button" value="." id="." onclick="entrer('.');">
<input type="button" value="=" id="=" onclick="calculer();">
<input type="button" value="/" id="/" onclick="faire('/');"><br/>
<input type="reset" value="C">
</form>
</body>
</html>
@karamel Messages postés 1859 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 17 juillet 2024 153
14 mai 2008 à 20:21
te prend pas trop la tete javascript a la réputation de ne pas être d'une précision imparable en calcule
meryem480 Messages postés 1 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 25 octobre 2006
25 oct. 2006 à 19:36
mon problème c'est avec 12,2,5*/25 ; ça existe pas mais il faut faire
un contrôleur de virgule
je veu un resultat
Nono8379 Messages postés 6 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 4 juillet 2006
4 juil. 2006 à 17:01
http://www.thescripts.com/forum/thread91162.html

en gros (tres gros...) c'est lié à la représentation des chiffres dans javascript. Donc çà va être difficile d'utiliser directement la fonction eval si tu veux un résultat précis...
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
29 juin 2006 à 17:44
Le problème existe aussi avec 12,99+11; la seule solution que j'ai trouvée est d'arrondir, mais cela ne résoud pas tous les problèmes. Qui résoudra ce casse tête ?
LGH
nexan44 Messages postés 7 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 28 juin 2006 4
28 juin 2006 à 20:33
oui mais le bug est pareil avec un point quil lui réprésente bien le séparateur. J'ai essayé avec d'autres chiffres, par exemple : 0,50/2, là on a le bon résultat. Donc je comprends toujours pas le problème du 0.3/3.

note : faut avouer que pour aller taper 0.3/3 sur une calculatrice c'est qu'on est vraiment nul en math !! lol
Nono8379 Messages postés 6 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 4 juillet 2006
28 juin 2006 à 09:04
je ne serai pas très surpris que tu ais en fait 0.99999 avec un point... et si tu fait 0,3/3 ce qui se passe est que tu divises en fait 3/3 tout simplement parce que la virgule n'est pas considérée comme ton séparateur entre ta partie entière et tes chiffres derrière la "virgule"...

à tester...
nexan44 Messages postés 7 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 28 juin 2006 4
26 juin 2006 à 18:07
Oui merci je m'en était pas aperçu, mais toujours est-il que je ne comprend pourquoi ça fait 0,999999999999999 au lieu de 0,1 ; bizare
cs_lgh Messages postés 41 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 avril 2009
26 juin 2006 à 17:49
Sympa, mais toujours les mêmes erreurs: 0,3/3 par exemple. Cela mérite un peu de finition...
Rejoignez-nous