Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

(javascript) due cifre decimali Opzioni
zwack
Inviato: Monday, February 14, 2005 6:24:50 PM

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.
Sponsor
Inviato: Monday, February 14, 2005 6:24:50 PM

 
dead
Inviato: Monday, February 14, 2005 8:55:23 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,541
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.
zwack
Inviato: Tuesday, February 15, 2005 10:38:29 AM

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.

dead
Inviato: Tuesday, February 15, 2005 10:27:55 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,541
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.
zwack
Inviato: Wednesday, February 16, 2005 12:02:26 PM

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)
}
}
dead
Inviato: Wednesday, February 16, 2005 1:20:55 PM

Rank: AiutAmico

Iscritto dal : 9/20/2004
Posts: 1,541
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.
zwack
Inviato: Friday, February 18, 2005 9:31:24 AM

Rank: Member

Iscritto dal : 8/7/2004
Posts: 1
grazie di nuovo, ho fatto come dici ed ho trovato l'errore, ciao.
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.