Forum Clubic

Arrondir à 2 décimal

Bonjour voilà j’ai une fonction somme qui fonctionne à merveille mais j’aimerais que le resultat s’affiche avec 2 décimal: voila le script de la fonction somme:

<script language="JavaScript" src = "validationquartier.js"></script>


<script language="javascript">


function Somme() {
A=document.addit.case1.value;
B=document.addit.case2.value;
C=document.addit.case3.value;
D=document.addit.case4.value;
E=document.addit.case5.value;
F=document.addit.case6.value;
G=document.addit.case7.value;
H=document.addit.case8.value;
I=document.addit.case9.value;
J=document.addit.case10.value;
K=document.addit.case11.value;
L=document.addit.case12.value;
M=document.addit.case13.value;
N=document.addit.case14.value;
O=document.addit.case15.value;
P=document.addit.case16.value;
Q=document.addit.case17.value;
R=document.addit.case18.value;
S=document.addit.case19.value;
T=document.addit.case20.value;
U=document.addit.case21.value;
V=document.addit.case22.value;
W=document.addit.case23.value;
X=document.addit.case24.value;
Y=document.addit.case25.value;
Z=document.addit.case26.value;
AA=document.addit.case27.value;
BB=document.addit.case28.value;
CC=document.addit.case29.value;
DD=document.addit.case30.value;
EE=document.addit.case31.value;
FF=document.addit.case32.value;
GG=document.addit.case33.value;
HH=document.addit.case34.value;
II=document.addit.case35.value;
JJ=document.addit.case36.value;
KK=document.addit.case37.value;
LL=document.addit.case38.value;
MM=document.addit.case39.value;
NN=document.addit.case40.value;
OO=document.addit.case41.value;
PP=document.addit.case42.value;
QQ=document.addit.case43.value;
RR=document.addit.case44.value;
SS=document.addit.case45.value;
TT=document.addit.case46.value;
UU=document.addit.case47.value;
VV=document.addit.case48.value;
XX=document.addit.case49.value;
YY=document.addit.case50.value;
ZZ=document.addit.case51.value;
AAA=document.addit.case52.value;
BBB=document.addit.case53.value;
CCC=document.addit.case54.value;
DDD=document.addit.case55.value;
EEE=document.addit.case56.value;
FFF=document.addit.case57.value;
GGG=document.addit.case58.value;
HHH=document.addit.case59.value;
III=document.addit.case60.value;
JJJ=document.addit.case61.value;
KKK=document.addit.case62.value;
LLL=document.addit.case63.value;
MMM=document.addit.case64.value;
NNN=document.addit.case65.value;
OOO=document.addit.case66.value;
PPP=document.addit.case67.value;
QQQ=document.addit.case68.value;
RRR=document.addit.case69.value;
SSS=document.addit.case70.value;
TTT=document.addit.case71.value;
UUU=document.addit.case72.value;
VVV=document.addit.case73.value;
WWW=document.addit.case74.value;
XXX=document.addit.case75.value;
YYY=document.addit.case76.value;
ZZZ=document.addit.case77.value;
AAAA=document.addit.case78.value;
BBBB=document.addit.case79.value;
CCCC=document.addit.case80.value;
DDDD=document.addit.case81.value;
EEEE=document.addit.case82.value;
FFFF=document.addit.case83.value;
GGGG=document.addit.case84.value;
HHHH=document.addit.case85.value;
IIII=document.addit.case86.value;
JJJJ=document.addit.case87.value;
KKKK=document.addit.case88.value;
LLLL=document.addit.case89.value;
MMMM=document.addit.case90.value;
NNNN=document.addit.case91.value;
OOOO=document.addit.case92.value;
PPPP=document.addit.case93.value;

document.addit.resultat.value=(Number(A*3.95)+Number(B*3.95)+Number(C*3.95)+Number(D*3.95)+Number(E*3.95)+Number(F*3.95)+Number(G*3.95)
+Number(H*3.95)+Number(I*3.95)+Number(J*3.95)+Number(K*3.95)+Number(L*3.95)+Number(M*3.95)+Number(N*3.95)+Number(O*3.95)
+Number(P*3.95)+Number(Q*3.95)+Number(R*3.95)+Number(S*3.95)+Number(T*3.95)+Number(U*3.95)+Number(V*1.00)+Number(W*1.00)
+Number(X*1.00)+Number(Y*1.00)+Number(Z*1.00)+Number(AA*1.00)+Number(BB*1.00)+Number(CC*1.00)+Number(DD*1.00)
+Number(EE*1.00)+Number(FF*1.00)+Number(GG*1.00)+Number(HH*1.00)+Number(II*1.00)+Number(JJ*1.00)+Number(KK*1.00)
+Number(LL*1.00)+Number(MM*1.00)+Number(NN*1.00)+Number(OO*1.00)+Number(PP*1.50)+Number(QQ*1.75)+Number(RR*2.00)
+Number(SS*1.25)+Number(TT*1.50)+Number(UU*1.50)+Number(VV*1.75)+Number(XX*1.25)+Number(YY*1.25)+Number(ZZ*1.50)
+Number(AAA*2.00)+Number(BBB*1.75)+Number(CCC*1.25)+Number(DDD*1.75)+Number(EEE*2.00)+Number(FFF*1.25)+Number(GGG*1.50)
+Number(HHH*1.75)+Number(III*1.00)+Number(JJJ*1.25)+Number(KKK*1.25)+Number(LLL*1.50)+Number(MMM*1.00)+Number(NNN*1.00)
+Number(OOO*1.25)+Number(PPP*1.75)+Number(QQQ*1.50)+Number(RRR*1.00)+Number(SSS*1.50)+Number(TTT*1.75)+Number(UUU*0.75)
+Number(VVV*0.75)+Number(WWW*0.75)+Number(XXX*0.75)+Number(YYY*0.75)+Number(ZZZ*1.75)+Number(AAAA*2.25)+Number(BBBB*1.75)
+Number(CCCC*1.75)+Number(DDDD*1.75)+Number(EEEE*2.25)+Number(FFFF*1.75)+Number(GGGG*2.75)+Number(HHHH*2.99)
+Number(IIII*7.79)+Number(JJJJ*3.89)+Number(KKKK*5.79)+Number(LLLL*8.59)+Number(MMMM*10.59)+Number(NNNN*17.69)
+Number(OOOO*25.99)+Number(PPPP*38.99)); 
}
</script>

Merci de bien vouloir m’aider

Quand même, ta fonction est assez barbare.

Pour ton problème de formattage, tu as une solution “simple” :

tu prend ta somme, que tu multiplie pas 100.

Et tu fais :

var r = somme % 100;
parseInt(somme / 100) +'.' + (r < 10 ? '0':'') + r;

C’est une solution simple mais efficace

C’est peut-être barbare, mais ça fonctionne et c’est très clair. Ce code au départ n’avait qu’a additionner 8 case mais avec le temps d’autres cases se sont ajouter.

je n’arrive pas plus à arrondir à 2 décimal avec le code que tu m’as montrer

Une méthode classique est de multiplier par 100, arrondir à l’entier, et diviser par 100.

nombre = Math.round(nombre * 100) / 100;

Par contre on n’a pas la même notion du “très clair” :paf:
Edité le 13/11/2008 à 20:30

<html>
<head>
<script type="text/Javascript">
function Somme()
{
	var somme = 0;
	var addit = document.getElementById('addit');
	var champs = addit.getElementsByTagName('input');
		
	for (var i = 0; i < champs.length; i++)
	{
		var coef = champs[i].getAttribute('coef');
		if (coef != null)
		{
			somme += champs[i].value * coef;
		}	
	}
	
	somme = Math.round(somme * 100) / 100;
	
	document.getElementById('resultat').value = somme;	
}
</script>
</head>
<body>
<form name="addit" id="addit">
	1 : <input type="text" coef="0.5"/><br/>
	2 : <input type="text" coef="1"/><br/>
	3 : <input type="text" coef="0.1"/><br/>
	
	Résultat : <input type="text" id="resultat"/>
	<input type="button" value="Calculer" onclick="Somme()"/>
</form>
</body>
</html>

Comme ça, il te suffit de mettre à chacun de tes champs un attribut “coef” contenant le coefficient multiplicateur, et ils sont ajoutés à la somme sans avoir à toucher le code Javascript :jap:
Edité le 13/11/2008 à 20:46

De préférence nm:coef, histoire de pas se faire emmerder lors de la validation W3C