Come si può formattare una cifra da:
1356089415 in 13.560.894,15
Come si può formattare una cifra da:
1356089415 in 13.560.894,15
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
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
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)
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
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"...<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">
Vuoi aiutare la riforestazione responsabile?
Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)
e va beneOriginariamente 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"...hai ragione, l'ho collaudata con visual studio e ho copiato la pagina pari pari.
![]()
![]()
Pietro
scusa, perchè se metto 1 mi restituisce 11 e non 0,01 :master:
Pietro
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)
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