|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ciao a tutti, ho questo problema: ho impostato una funzione che mi dovrebbe restituire il valore di un'espressione, ma stranamente il valore non è corretto mi sottrae sempre qualcosa, es. se il risultato deve essere 10.321 mi esce 10.320000009. l'espressione credo di averla impostata bene: mioform.text1.value = 10.361 * mioform.text2/1000 (dove 10.361 è un decimale). qualcuno sa spiegarmi che accade? in più, esiste una funzione che mi riduce a due i numeri dopo la virgola? grazie a chiunque potrà aiutarmi.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
la differenza probabilmente scaturisce dalla maniera di memorizzare le variabili nel PC (è una lunga storia che non vale la pena di affrontare qui, ma succede anche nelle calcolatrici: se fai 10/6 e poi rimoltiplichi per 6 probabilmente non ti torna 10). Cmq non credo che esista una funzione che ti permetta di troncare i decimali (come il Fix() di Visual basic, tanto per capirci) Però esistono floor() ceil() e round() che arrotondano all'intero più vicino con vari metodi. Puoi usare un sotterfugio: se A,BCDEFGH è il tuo numero, prima lo moltiplichi per 100, ottenendo ABC,DEFGH poi gli applichi floor() o un'altra dele funzioni e poi lo ridividi per 100 ottenendo A,BC. Potrebbe funzionare Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ho trovato questa: (script language="javascript") (!-- var x = Math.ceil(0.5); alert(x); //--) (/script) dovrebbe arrotondare il numero all'intero superiore, ma non so come utilizzarla all'interno di un ciclo if. grazie per l'aiuto e ciao.
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
come facevi prima solo che metti tutto dentro alla funzione ceil: mioform.text1.value = Math.ceil(10.361 * mioform.text2/1000); ricordati però che ceil ti da un numero intero, non 2 decimali, come mi sembra volessi tu. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
ho provato come dici, ma non funziona e non capisco perchè, puoi dirmi se l'ho inserita bene? ti ringrazio tantissimo, ciao. function esit() { if (form2.profilo.value == 0 && form2.durata.value == 0) { form2.esito.value = Math.ceil (form2.reddito.value - form2.costonucleo.value - form2.prestiti.value)/18.462 * (1000) } }
|
|
Rank: AiutAmico
Iscritto dal : 9/20/2004 Posts: 1,597
|
E' difficile a dirsi perchè non posso sapere che tipo di variabili rappresentano i form.xxx. Prova a verificare con degli alert i valori contenuti nelle variabili form.xxx.value Inoltre prova a usare Netscape, per un semplice motivo: nel menu tools > web developement, ha una console javascript che ti <b>segnala esattamente</b> gli errori che incontra e dove li incontra. Sono cosi avanti che quando guardo indietro vedo il futuro.
|
|
Rank: Member
Iscritto dal : 8/7/2004 Posts: 1
|
grazie di nuovo, ho fatto come dici ed ho trovato l'errore, ciao.
|
|
Guest |