Visualizzazione dei risultati da 1 a 8 su 8

Discussione: somme (strane) in js

  1. #1
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    somme (strane) in js

    ciao, su un programmino utilizzo una funzione
    Codice PHP:
    function somme(){
       var 
    dato0 document.pagamenti.quanto0.value;
       var 
    dato1 document.pagamenti.quanto1.value;  
       var 
    totale 0+(dato0*1)+(dato1*1);
       
    document.pagamenti.somma.value totale;

    per fare delle somme, la funzione la genero da php in quanto il numero di agamenti è variabile..il problema è che con quella funzione, e con i campi
    quanto0 = 13.37
    e
    quanto1= 13.39

    come risultato mi dà
    26.759999999998
    invece di 26.76...perchè?!?

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    credo che se moltiplichi per 1 poi il float viene rappresentato così
    usa il parseInt o parseFloat
    var totale = parseFloat(dato0) + parseFloat(dato1);

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da floyd
    credo che se moltiplichi per 1 poi il float viene rappresentato così
    usa il parseInt o parseFloat
    var totale = parseFloat(dato0) + parseFloat(dato1);
    no anche mettendo
    var totale = 0+parseFloat(dato0)+parseFloat(dato1);

    me lo fà lo stesso...

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il javascript lavora con numeri in notazione esponenziale in virgola mobile... una simile approssimazione e' molto piu' che accettabile

    Scherzi (e fatti) a parte puoi utilizzare le funzioni Math.floor() Math.round() e Math.ceil() con le opportune trasformazioni di scala a seconda dell'approssimazione desiderata.

    Per esempio:

    risultato = Math.round((13.37 + 13.39) *100) / 100;

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    si ok ma l'approssimazione non mi và bene, perchè poi eseguo un controllo che se il totale non è 26.76 non lascio andare avanti...quindi per 0.0000000000001 mi blocca tutto..eppure è solo una somma, non ci sono divisioni o moltiplicazioni varie, 0.39+0.37 dovrebbe fare 0.76 in ogni caso! non comprendo

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da thitan
    si ok ma l'approssimazione non mi và bene, perchè poi eseguo un controllo che se il totale non è 26.76 non lascio andare avanti...quindi per 0.0000000000001 mi blocca tutto..eppure è solo una somma, non ci sono divisioni o moltiplicazioni varie, 0.39+0.37 dovrebbe fare 0.76 in ogni caso! non comprendo
    Hai poco da comprendere... e' il funzionamento del linguaggio e puoi solo accettarlo e adottare gli opportuni aggiustamenti come quello che ti ho suggerito.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da br1
    Hai poco da comprendere... e' il funzionamento del linguaggio e puoi solo accettarlo e adottare gli opportuni aggiustamenti come quello che ti ho suggerito.

    ciao
    ok mi adeguo, con math.floor() funziona, grazie

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    e se il valore è 26.761 al posto di 26.759 ??
    usa il Math.round

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.