Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Due decimali fissi

  1. #1
    Utente di HTML.it L'avatar di Grinder
    Registrato dal
    Mar 2003
    Messaggi
    1,374

    Due decimali fissi

    Ho provato varie funzioni, ma nessuna finora mi ha dato due decimali fissi...mi spiego meglio: se ho una variabile 100 a video vorrei leggere 100,00

    Al momento il mio script è così:
    codice:
    (Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    Naturalmente va bene fin quando c'è almeno uno 0,01

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    La rappresentazione dei numeri non e' forzabile... devi trasformare la variabile in stringa, valutarla e trasformarla...

    stringa = new String(Math.round((totale)*100)/100+valuta).replace(/\./, ",");
    stringa += (stringa.indexOf(",")<0)?',00':'00';
    stringa = stringa.substr(0,stringa.indexOf(",")+3);


    oppure sommare una quantita' infinitesima e troncare la stringa...

    stringa = new String((Math.round((totale)*100)/100+valuta)+0.0000001).replace(/\./, ",");
    stringa = stringa.substr(0,stringa.indexOf(",")+3);


    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

  3. #3
    Utente di HTML.it L'avatar di Grinder
    Registrato dal
    Mar 2003
    Messaggi
    1,374
    Grassie grassie, ora funziona tutto

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho riesumato ed adattato alcune vecchie funzioni a volte che non siano utili:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    	<head>
    		<title>a</title>
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="ProgId" content="VisualStudio.HTML">
    		<meta name="Originator" content="Microsoft Visual Studio .NET 7.1">
    		<script id="clientEventHandlersJS" language="javascript">
    <!--
    
    function Button1_onclick() 
    {
    	var number = (document.getElementById("numero").value);
    	var dec = (document.getElementById("decimali").value); //if(dec == "") dec = null;
    	var sepm = document.getElementById("sepmigliaia").value;
    	var sepd = document.getElementById("sepdecimale").value;
    	
    	var n = fix(number, dec);
    	document.getElementById("risultato_fix").innerHTML = n;
    	n = formatCurrency(number,dec,sepm,sepd);
    	document.getElementById("risultato_formatCurrency").innerHTML = n;
    }
    
    //------------------------------------------------
    //Arrotonda number a dec cifre
    //se dec non è specificato, arrotonda a 10 cifre
    //------------------------------------------------
    function fix(number, dec)
    { 
    	var n =(dec >=0)? Math.pow(10,dec) : 1e10; 
    	return Math.round(number * n) / n; 
    } 
    
    //-------------------------------------------------
    //arrotonda il numero num a dec decimali
    // num = numero da formattare
    //dec  = numero di decimali, predefinito = 2
    //sepm = separatore migliaia, predefinito = spazio
    //sepd = separatore decimale, predefinito = virgola
    //-------------------------------------------------
    function formatCurrency(num, dec, sepm, sepd)
    {
       	if(dec == undefined || dec == "") dec = 2;
       	if(sepm == undefined || sepm == "") sepm = " "; sepm = sepm.substr(0,1);
       	if(sepd == undefined || sepd == "") sepd = ","; sepd = sepd.substr(0,1);
       	
       	var d = Math.pow(10,dec);
       	
       	num = num.toString().replace(/\$|\,/g,'');
    	if(isNaN(num)) num = "0";
    	sign = (num == (num = Math.abs(num)));
    		
    	num = Math.floor(num * d + 0.50000000001);
    	cents = num % d;
    	num = Math.floor(num / d).toString();
    	if(cents < 10) cents = "0" + cents;
    	for (var i = 0; i < Math.floor((num.length - (1+i))/3); i++)
    	    num = num.substring(0, num.length - (4 * i + 3)) + sepm + num.substring(num.length - (4 * i + 3));
        return (((sign)?'':'-') + '' + num + sepd + cents);
    }
    
    
    //-->
    		</script>
    	</head>
    	<body MS_POSITIONING="FlowLayout">
    		<table>
    			<tr>
    				<td>Numero:</td>
    				<td><INPUT id="numero" type="text" value="10236425.9064" name="numero"></td>
    			</tr>
    			<tr>
    				<td>Decimali:</td>
    				<td><INPUT type="text" ID="decimali" NAME="decimali" value="2"></td>
    			</tr>
    			<tr>
    				<td>Sep. migliaia:</td>
    				<td><INPUT type="text" ID="sepmigliaia" NAME="sepmigliaia" value=" "></td>
    			</tr>
    			<tr>
    				<td>Sep decimale:</td>
    				<td><INPUT type="text" ID="sepdecimale" NAME="sepdecimale" value=","></td>
    			</tr>
    			<tr><td colspan="2"><INPUT type="button" value="Calcola" ID="Button1" NAME="Button1" language="javascript" onclick="return Button1_onclick()"></td></tr>
    			<tr>
    				<td>risultato fix:</td>
    				<td><span id="risultato_fix"></span></td>
    			</tr>
    			<tr>
    				<td>risultato formatCurrency:</td>
    				<td><span id="risultato_formatCurrency"></span></td>
    			</tr>
    			
    		</table>
    	</body>
    </html>
    Pietro

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.