Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: replace su numero

  1. #11
    riciao...
    facendo varie prove mi sono accorto che c'è qualcosa che non va su ques'ultimo script:
    se non ho nessun decimale mi aggiunge il doppio zero ma se di decimale ne ho uno solo non mi aggiunge lo zero mancante...
    ad esempio se metti 10 sul materiale e 30 sul tempo il risultato è 27,5 e non 27,50...
    Chi Non RisiKa noN RosiKa

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Metti un alert dopo ogni istruzione: magari c'e` un errore in qualche RegExp:

    tot = Math.round(tot*100)/100;
    alert("uno "+tot);
    tot = tot.toString();
    alert("due "+tot);
    tot = tot.replace(/^(\d+)$/, "$1,00");
    alert("tre "+tot);
    tot = tot.replace(/^(\d+)\.(\d)$/, "$1,$2"+"0");
    alert("qua "+tot);
    tot = tot.replace(/^(\d+)\.(\d+)$/, "$1,$2");
    alert("cin "+tot);

    Dimmi cosa appare in ognuno degli alert. La RegExp che cambia il caso di un solo decimale, e` la seconda.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #13
    scusa ma ieri ero in ferie...
    ho fatto la prova che mi hai detto ed ecco il risultato:
    ho messo 100 sul materiale e 90 sul tempo, il totale è 152,50.

    uno 152.5
    due 152,5
    tre 152,5
    qua 152,5
    cin 152,5

    lo script adesso è:
    function calcola() {
    var mat, min, posa, tot;
    mat = document.capitolati.Materiale.value;
    mat = mat.replace(",", ".");
    min = document.capitolati.Tempo.value;
    min = min.replace(",", ".");
    posa = 35/60)*min
    tot = parseFloat(mat)+parseFloat(posa)
    tot = Math.round(tot*100)/100
    alert("uno "+tot);
    posa = Math.round(posa*100)/100
    tot = tot.toString().replace(/\./, ",");
    alert("due "+tot);
    posa = posa.toString().replace(/\./, ",");
    tot = tot.replace(/^(\d+)$/, "$1,00");
    alert("tre "+tot);
    tot = tot.replace(/^(\d+)\.(\d)$/, "$1,$2"+"0");
    alert("qua "+tot);
    tot = tot.replace(/^(\d+)\.(\d+)$/, "$1,$2");
    alert("cin "+tot);
    posa = posa.replace(/^(\d+)$/, "$1,00");
    posa = posa.replace(/^(\d+)\.(\d)$/, "$1,$2"+"0");
    posa = posa.replace(/^(\d+)\.(\d+)$/, "$1,$2");
    document.capitolati.Posa.value=posa
    document.capitolati.Tot.value=tot
    }
    Chi Non RisiKa noN RosiKa

  4. #14
    azzz...
    mi sa che ho trovato:
    l'errore era dovuto al fatto che sostituivo il . con la , prima dei controlli sui decimali, adesso con lo script così mi sembra funzioni tutto:

    function calcola() {
    var mat, min, posa, tot;
    mat = document.capitolati.Materiale.value;
    mat = mat.replace(",", ".");
    min = document.capitolati.Tempo.value;
    min = min.replace(",", ".");
    posa = (35/60)*min
    tot = parseFloat(mat)+parseFloat(posa)
    tot = Math.round(tot*100)/100
    posa = Math.round(posa*100)/100
    tot = tot.toString();
    posa = posa.toString().replace(/\./, ",");
    tot = tot.replace(/^(\d+)$/, "$1,00");
    tot = tot.replace(/^(\d+)\.(\d)$/, "$1,$2"+"0");
    tot = tot.replace(/^(\d+)\.(\d+)$/, "$1,$2");
    tot = tot.toString().replace(/\./, ",");
    posa = posa.replace(/^(\d+)$/, "$1,00");
    posa = posa.replace(/^(\d+)\.(\d)$/, "$1,$2"+"0");
    posa = posa.replace(/^(\d+)\.(\d+)$/, "$1,$2");
    document.capitolati.Posa.value=posa
    document.capitolati.Tot.value=tot
    }
    Chi Non RisiKa noN RosiKa

  5. #15
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Vedi che il trucco delle alert funziona meglio di quanto si creda ... fa accendere il cervello.
    Hai trovato l'errore da solo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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 © 2026 vBulletin Solutions, Inc. All rights reserved.