Avatar billede torotune Nybegynder
22. oktober 2013 - 10:33 Der er 5 kommentarer

Formatere beløb til "dansk pris"

Hej,

Jeg har et beløb som Decimal.

1900,30

Jeg vil gerne have dette beløb afrundet, fjernet decimaler
og tilføjet en tusindtals-separator og tilføjet ,- så det ender med at se sådan ud:

1.900,-

Det var mange ønsker på én gang :-) Jeg har prøvet med et par kryptiske løsninger, men er der ikke en indbygget funktion der kan gøre dette nemt?

Mvh.
Avatar billede torotune Nybegynder
22. oktober 2013 - 10:47 #1
Jeg kan gøre det med:

    formattedAmount = Math.Round(amount, 0).ToString("n0", CultureInfo.CurrentCulture) & ",-"

Nogen bedre/mere standardiserede bud?
Avatar billede bvli Praktikant
22. oktober 2013 - 12:56 #2
var number = 1900.30M;
var result = string.Format("{0:N0},-", number);
Avatar billede arne_v Ekspert
03. november 2013 - 05:07 #3
Man kan altid diskutere hvad der er den paeneste loesning.

Jeg ville overveje noget a la:


using System;
using System.Globalization;

namespace E
{
    public class MyCultureInfo
    {
        private static object mylock = new object();
        private static MyCultureInfo _instance;
        private CultureInfo real;
        private MyCultureInfo()
        {
            real = (CultureInfo)CultureInfo.CurrentCulture.Clone();
            real.NumberFormat = (NumberFormatInfo)real.NumberFormat.Clone();
            real.NumberFormat.CurrencyDecimalDigits = 0;
            real.NumberFormat.CurrencyGroupSeparator = ".";
            real.NumberFormat.CurrencyPositivePattern = 1;
            real.NumberFormat.CurrencySymbol = ",-";
        }
        public static CultureInfo Instance
        {
            get
            {
                lock(mylock)
                {
                    if(_instance == null)
                    {
                        _instance = new MyCultureInfo();
                    }
                    return _instance.real;
                }
            }
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            decimal x = 1900.30m;
            Console.WriteLine(x.ToString("c"));
            Console.WriteLine(x.ToString("c", MyCultureInfo.Instance));
            Console.ReadKey();
        }
    }
}
Avatar billede torotune Nybegynder
01. december 2014 - 14:50 #4
Hej Arne, min løsning endte med uddrag af dit forslag, men fik aldrig lukket.

Lægger du et svar?
Avatar billede arne_v Ekspert
01. december 2014 - 15:02 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester