• User Attivo

    Arrotonda 2 numeri dovo la virgola

    salve a tutti....
    sto usando queste righe per un form di calcolo iva, come potrei inserire un arrotondamento per eccesso o difetto con due sole cifre dopo la virgola?

    [HTML]
    <SCRIPT language="Javascript1.2">
    function do_it()
    {
    if (document.forms[0].totale.value=="")
    {
    window.alert("Inserisci un valore nel campo 'Imponibile'");
    }
    if ((document.forms[0].iva.value=="")||(((document.forms[0].iva.value)*1)>100)||(((document.forms[0].iva.value)*1)<0))
    {
    window.alert("Inserisci un valore IVA tra 0% e 100%");
    }
    else
    {
    var imp=(document.forms[0].totale.value)1;
    var iva=(document.forms[0].iva.value)1;
    document.forms[0].totaleiva.value=imp+(imp
    (iva/100));
    document.forms[0].totiva.value=imp
    (iva/100);
    if (document.forms[0].totaleiva.value=="NaN")
    {
    document.forms[0].totaleiva.value="Valore Importo / IVA non corretto";
    window.alert("Inserisci un valore NUMERICO nei campi \n 'Imponibile' e 'IVA'");
    document.forms[0].totale.value="0";
    document.forms[0].iva.value="20";
    }
    }
    }
    </SCRIPT>

    [/HTML]

    ciao e grazie a tutti


  • User Attivo

    ...scusate ma ho proprio bisogno di aiuto.....
    allora per il momento sono riuscito a ridurre i decimali al totaleiva.value ma
    se eseguo la stessa cosa anche con totiva.value non funziona:

    [HTML]
    <SCRIPT language="Javascript1.2">
    function do_it()
    {
    if (document.forms[0].totale.value=="")
    {
    window.alert("Inserisci un valore nel campo 'Imponibile'");
    }
    if ((document.forms[0].iva.value=="")||(((document.forms[0].iva.value)*1)>100)||(((document.forms[0].iva.value)*1)<0))
    {
    window.alert("Inserisci un valore IVA tra 0% e 100%");
    }
    else
    {
    var imp=(document.forms[0].totale.value)*1;
    var iva=(document.forms[0].iva.value)1;
    var fciva=(document.forms[0].fciva.value)1;
    document.forms[0].totaleiva.value=imp+(imp
    (iva/100)+(fciva));
    totaleiva.value = Number(totaleiva.value).toFixed(2);
    document.forms[0].totiva.value=imp
    iva/100;
    totiva.value = Number(totiva.value).toFixed(2); ///NON FUNZIONA
    if (document.forms[0].totaleiva.value=="NaN")
    {
    document.forms[0].totaleiva.value="Valore Importo / IVA non corretto";
    window.alert("Inserisci un valore NUMERICO nei campi \n 'Imponibile' e 'IVA'");
    document.forms[0].totale.value="0";
    document.forms[0].iva.value="20";

    }
    }
    }
    </SCRIPT>

    <body>
    <table border="0" cellpadding="0" cellspacing="5" width="66%" ><tr>
    <td width="24%">Imponibile</td>
    <td width="30%">€ <input name="totale" title="Il campo accetta solo numeri" onBlur="do_it();" size="12"> es: 00.00</td>
    </tr>
    <tr>
    <td>IVA        <input name="iva" class="text" title="Il campo accetta solo numeri" onBlur="do_it();" value="21" size="7">%</td>
    <td>€ <input name="totiva" title="Il campo accetta solo numeri" onBlur="do_it();" size="12">  /  <input name="fciva" title="Il campo accetta solo numeri" onBlur="do_it();" value="" size="7"></td>
    </tr>
    <tr>
    <td>Totale (IVA compresa)</td>
    <td>€ <input name="totaleiva" id="totaleiva" title="Il campo accetta solo numeri" size="12" > es: 00.00
    </td>
    </tr>
    </table>
    </body>

    [/HTML]

    aiutatemiiii......:x


  • User Attivo

    Questo dovrebbe fare l'arrotondamento:

    [HTML]<script>
    document.write('1,234 = '+(Math.round(1.234100)/100)+'<br>\n')
    document.write('1,235 = '+(Math.round(1.235
    100)/100)+'<br>\n')
    </script>[/HTML]

    Ora con un po' di aggiustamenti al codice il problema è risolto.

    Nota importante: attenzione a come sono messe le parentesi...


  • User Attivo

    non funziona......diciamo che non so come inserirlo!!!!


  • User Attivo

    Se la soluzione che ho postato (apparentemente) non funzionasse, hai provato a metterlo negli opportuni tag html? Nel primo caso fa un arrotondamento per difetto, e l'altro per eccesso.
    Se ora fosse a posto, come lo era già per me, suggerirei di vedere la specifica del metodo presente nel listato originario per capire come funziona. Una volta fatto il matching con quello proposto, riadattare il codice originario applicando il metodo funzionante.


  • User Attivo

    ...non funziona (era implicito) per come la inserisco io nello script e non nel codice html che invece (non apparentemente) funziona benissimo!


  • User Attivo

    Premetto che avevo solo provato ad eseguire l'ultimo listato sul calcolo IVA, ma non ho capito come dovrebbe funzionare.
    Il metodo JS che ho postato è la soluzione all'oggetto del thread "Arrotonda 2 numeri dopo la virgola". Il metodo toFixed() fa la stessa cosa di round()? Ad intuito direi di no perché se così fosse uno dei due non dovrebbe esistere essendo "doppione" dell'altro.
    Un suggerimento utile è quello di analizzare nel dettaglio tutte le istruzioni JS.
    Non so se il tuo algoritmo fosse corretto, ma questo è un altro paio di maniche...