Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: formattare cifra

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82

    formattare cifra

    Come si può formattare una cifra da:

    1356089415 in 13.560.894,15

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Intendi un numero, immagino.

    Supponendo che il numero abbia sempre lo stesso numero di cifre:
    var numero = 1356089415;
    var grezzo = String(numero);
    var rifinito = grezzo.replace(/^(\d{2})(\d{3})(\d{3})(\d{2})$/, "$1.$2.$3,$4");
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    no mich_ le cifre possono variare.

    Cmq devo sempre avere la virgola dopo le prime due e poi ogni tre un punto.

    Devo formattare a mo di prezzo

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924

    Quasi da pillola

    Quasi da pillola, vero Mich?

    codice:
    <html>
    <head>
    <script>
    function format(number) {
        
        number = String(number);
        formatted = number.replace(/\d*?(\d{2})$/, ",$1");
        number = number.replace(/(\d*?)(\d{2})$/, "$1");
    
        while (number.length > 3) {
          formatted = number.replace(/\d*?(\d{3})$/, ".$1") + formatted;
          number = number.replace(/(\d*?)\d{3}$/, "$1");
        }
       
        formatted = number + formatted;
        return formatted;
    
    }
    </script>
    </head>
    <body>
    <script>
    document.write(format(7645375678901));
    </script>
    </body>
    </html>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    visto che sto diventando scemo mando pure la mia soluzione.

    c'è pure quella di fcaldera che conservo nella mia libreria
    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 valore, decimale, intero, numero_migliaia, i, resto, numero_formattato, tmp;
    	valore = document.getElementById("Text1").value;
    	decimale = valore.substring(valore.length, valore.length - 2);
    	document.getElementById("Text2").value = "," + decimale;
    	intero = valore.substring(0, valore.length - 2);
    	document.getElementById("Text2").value = intero + "," + decimale;
    	numero_migliaia = Math.floor((intero.length - 1) / 3);
    	
    	numero_formattato = "";
    	resto = intero;
    	for(i = 0; i < numero_migliaia; i++)
    	{
    		tmp = resto.substring(resto.length, resto.length - 3);
    		resto = resto.substring(0, resto.length - 3);
    		numero_formattato = "." + tmp + numero_formattato;
    
    	}
    	
    	numero_formattato = resto + numero_formattato;
    	if(numero_formattato == "" ) numero_formattato = "0";
    	if(decimale == "" ) decimale = "0";
    	if(decimale.length < 2) decimale = "0" + decimale;
    	numero_formattato = numero_formattato + "," + decimale ;
    	document.getElementById("Text2").value = (numero_formattato);
    	
    	
    	document.getElementById("Text3").value = format(valore);
    }
    
    function format(number) 
    {
        number = String(number);
        formatted = number.replace(/\d*?(\d{2})$/, ",$1");
        number = number.replace(/(\d*?)(\d{2})$/, "$1");
    
        while (number.length > 3) 
        {
          formatted = number.replace(/\d*?(\d{3})$/, ".$1") + formatted;
          number = number.replace(/(\d*?)\d{3}$/, "$1");
        }
       
        formatted = number + formatted;
        return formatted;
    
    }
    
    //-->
    </script>
    </head>
    	<body MS_POSITIONING="FlowLayout">
    		<INPUT type="text" ID="Text1" NAME="Text1" style="border:1px black solid;TEXT-ALIGN: center;" value="1356089415">
    		<INPUT type="button" value="Converti" ID="Button1" NAME="Button1" language="javascript" onclick="return Button1_onclick()">
    		<INPUT type="text" ID="Text2" NAME="Text2" style="border:1px black solid;TEXT-ALIGN: center;">
    		<INPUT type="text" ID="Text3" NAME="Text3" style="border:1px black solid;TEXT-ALIGN: center;">
    	</body>
    </html>
    Pietro

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    corta, eh Pietro??

    Ma anche tralasciando la lunghezza perchè ci metti cose che sono palesemente inutili, del tipo

    <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">
    Consiglio: nelle soluzioni cerca di essere più snello possibile, altrimenti nn si riesce a vederne il "succo"...
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da fcaldera
    corta, eh Pietro??

    Ma anche tralasciando la lunghezza perchè ci metti cose che sono palesemente inutili, del tipo



    Consiglio: nelle soluzioni cerca di essere più snello possibile, altrimenti nn si riesce a vederne il "succo"...
    e va bene hai ragione, l'ho collaudata con visual studio e ho copiato la pagina pari pari.

    Pietro

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    scusa, perchè se metto 1 mi restituisce 11 e non 0,01 :master:
    Pietro

  9. #9
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    giusta osservazione! Questa funziona anche per prezzi inferiori all'euro

    codice:
    <html>
    <head>
    <script>
    function format(number) {
        
        number = String(number);
        
        while (number.length < 3) {
            number = "0" + number;
        }
        
        formatted = number.replace(/\d*?(\d{2})$/, ",$1");
        number = number.replace(/(\d*?)\d{2}$/, "$1");
    
        while (number.length > 3) {
          formatted = number.replace(/\d*?(\d{3})$/, ".$1") + formatted;
          number = number.replace(/(\d*?)\d{3}$/, "$1");
        }
       
        formatted = number + formatted;
        return formatted;
    
    }
    </script>
    </head>
    <body>
    <script>
    document.write(format(01));
    </script>
    </body>
    </html>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Bella, fcaldera, ma si puo` ottimizzare (credo).

    Lo saprei fare subito in Perl, ma in JS dovrei studiare un po' i manuali, per cui ti lascio giocarci (ora non ho tempo).
    (forse conviene usare .match() anziche` .replace() )

    Dalla RegExp conviene estrarre due valori, quello da aggiungere al formatted e quello da sostituire al number; quindi e` sufficiente una sola RegExp ad ogni passaggio, non due (tra l'altro quasi uguali).

    Inoltre parametrizzerei il numero di cifre decimali (accettando anche lo 0), in modo da renderla piu` generale.
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.