PDA

View Full Version : [C#]String.Format per valore in euro


blackskop
24-02-2009, 19:53
Ciao a tutti. Ho la necessità di formattare una stringa trattandola come un prezzo in euro.

La stringa del prezzo deve essere del tipo

1.000.000.000,00

quindi, separatore delle migliaia e virgola per i due valori decimali.

Se ho una stringa "1", il suo valore formattato sarà "0,01".

Se ho "20" ---> "0,20"

Se ho "10011" ---> "100,11"

Se ho "13123.45" ----> "13.123,45"

Se ho "00000002" ---> "0,02"

Se ho "123123.129923" ---> "123.123,12"

Esiste una regular expression apposita?

MarcoGG
25-02-2009, 08:23
Se ho una stringa "1", il suo valore formattato sarà "0,01".

Se ho "20" ---> "0,20"

Se ho "10011" ---> "100,11"

Se ho "13123.45" ----> "13.123,45"

Se ho "00000002" ---> "0,02"

Se ho "123123.129923" ---> "123.123,12"

Esiste una regular expression apposita?


Non penso proprio, nel senso che ciò che chiedi è abbastanza "illogico"...
Negli esempi 1,2,3,5 è chiaro che interpreti le cifre come centesimi, ma poi se c'è il punto, negli esempi 4,6, la cifra a sinistra del punto non sarebbe più un centesimo, ma un euro...
Inoltre nell'esempio 6 il troncamento non tiene conto che dopo il 2 c'è un 9, quindi in teoria dovrebbe dare un .13, più che un .12, o sbaglio ?
Secondo me ti fai una piccola classe che interpreta i vari casi e restituisce il risultato. Dubito tu possa farlo in una sola riga di codice ( ma non si sa mai... ;) ).

blackskop
07-03-2009, 13:02
Non penso proprio, nel senso che ciò che chiedi è abbastanza "illogico"...
Negli esempi 1,2,3,5 è chiaro che interpreti le cifre come centesimi, ma poi se c'è il punto, negli esempi 4,6, la cifra a sinistra del punto non sarebbe più un centesimo, ma un euro...
Inoltre nell'esempio 6 il troncamento non tiene conto che dopo il 2 c'è un 9, quindi in teoria dovrebbe dare un .13, più che un .12, o sbaglio ?
Secondo me ti fai una piccola classe che interpreta i vari casi e restituisce il risultato. Dubito tu possa farlo in una sola riga di codice ( ma non si sa mai... ;) ).

Quando inserisco un punto, allora la parte inserita fino a quel momento diventa la parte intera, tutto il seguito sarà la parte decimale. Non deve fare nessun tipo di arrotondamento, deve semplicemente troncare.