Newsgroup: it.comp.lang.javascript
Titolo: somma con parseFloat

Salve a tutto il NG,
una domanda che a molti può sembrare banale ma per me non lo è ...
io  vorrei sommare dei numeri in virgola mobile e ottenere il risultato in
virgola mobile.
Segue esempio:
--------------
<form name="pippo">
<input name="licenza" type="hidden" value="560.00"
onClick="this.form.campo3.value = parseFloat(this.form.licenza.value) +
parseFloat(this.form.layout.value) + parseFloat(this.form.manuale.value) +
parseFloat(this.value);">
                <input name="layout" type="hidden" id="layout4"
value="206.00" onClick="this.form.campo3.value =
parseFloat(this.form.licenza.value) + parseFloat(this.form.layout.value) +
parseFloat(this.form.manuale.value) + parseFloat(this.value);">
                <input name="manuale" type="hidden" id="manuale"
value="295.00" onClick="this.form.campo3.value =
parseFloat(this.form.licenza.value) + parseFloat(this.form.layout.value) +
parseFloat(this.form.manuale.value) + parseFloat(this.value);">
     <input name="campo3" type="text" size="20" value="" readonly="true">
</form>
------------------
mi chiedo una cosa perche il risultato viene sempre come numero intero e nn
reale? (esempio 4343,00)?
cosa può essere?
grazie lo stesso comunque
Fausto
-- 
^-^

 reale? (esempio 4343,00)?
Stai usando il punto come separatore decimale?
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 ha scritto nel messaggio
news:19bxc32w0a7qy$.dlg@ID-147253.user.individual.net...


 Sì è lì che sbaglio?
No, è corretto e quello che hai scritto è sintatticamente corretto.
Stai però sommando 2 volte il valore del campo stesso (hai elencato tutte e
3 le textbox, quindi compresa quella dove esegui l'onclick, però hai anche
un parseFloat(this.value); quindi la casella dove viene scatenato l'onclick
viene sommata 2 volte e segnala un risultato sbagliato (ma non sempre
intero)).
Guarda qua:
http://www.criosoftware.it/ParseFloat.htm
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 ha scritto nel messaggio
news:13mkzgl7yz5oc$.dlg@ID-147253.user.individual.net...


 in questo modo viene sempre intero ...
No
Hai provato il mio esempio e viene un numero intero??? (ovviamente
cambiando le cifre perché così come sono per forza danno un intero: sono
tutti numeri interi...)
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 cambiando le cifre perché cosě come sono per forza danno un intero: sono


 forse nn sono stato chiaro ecco qual era il mio problema
Ah
No, non era molto chiaro (hai scritto "viene sempre con numero intero")
Se cerchi in rete trovi parecchi esempi, uno a caso:
http://groups.google.it/groups?hl=it&lr=&selm=3B60B52D.4040001%40iol.it


 Si sono numeri interi ma io vorrei che il risultato sia 1061,00 e non 1061
Nei browser attuali puoi usare il metodo "toFixed()" per ottenere cio' che
vuoi. Esempio:
var first=12,second=24.4356,third=48.2;
alert(first.toFixed(2));
alert(second.toFixed(2));
alert(third.toFixed(2));
Ricordati che ottieni pero' una *stringa*, e non piu' un numero. Quindi
serve solo in visualizzazione. Se poi vuoi farci altri calcoli, ricorda che
devi ritrasformare la stringa in numero.
Per i browser che non supportano toFixed, tipo Netscape 4.x, puoi
implementarlo in questo modo:
if (typeof Number.prototype.toFixed=="undefined"){
	Number.prototype.toFixed=function(n){
		return (n>0)?new String(Math.round(this*new Number("1e+"+n))).replace(new
RegExp("(\\d+)(\\d{"+n+"})$"),"$1.$2"):new String(Math.round(this));
	};
};
Fatta al volo, ma dovrebbe andare.
-- 
ZER0://coder.gfxer.web-designer/
~ "L'arte non riproduce cio' che e' visibile,ma rende visibile cio' che
non sempre lo e'" (Paul Klee)