Search code examples
c#c#-4.0invariantculture

Decimal string without decimals, dots or commas in any culture


If I have a simple decimal in C#, and I want to ToString it without any dots, commas or decimals in any culture - how do i do it?

I tried the ToString("N0") with invariantculture which removes decimals, but it adds "." in my language.

What is the best way to do this?


Solution

  • You haven't clarified in the comments yet, but I suspect you want something like this?

    3.14 -> 3

    5.34543543 -> 5

    If that is correct then you simply need to cast your decimal to an int which would strip the precision off and give you just the whole number.

    string someString = ((int)someDecimal).ToString();
    

    If you find yourself repeating this logic often you can make a simple extension method to keep it DRY:

    public static class DecimalExtensions
    {
        public static string ToIntString(this decimal input)
        {
            return ((int)input).ToString();
        }
    }
    

    And simply call it like so:

    string someString = someDecimal.ToIntString();
    

    Simple fiddle here

    EDIT

    @HansPassant actually gave the simplest solution in the comments and I feel silly for not remembering:

    string someString = someDecimal.ToString("F0", System.Globalization.CultureInfo.InvariantCulture);
    

    This is a much better answer and if Hans posts an answer I suggest marking theirs as the solution.