What is the c# equivalent of Java DecimalFormat?

c#, decimalformat, java

Solution

For decimal separator you can set it in a `NumberFormatInfo` instance and use it with ToString:

    NumberFormatInfo nfi = new NumberFormatInfo();
    nfi.NumberDecimalSeparator = ".";

    //** test **
    NumberFormatInfo nfi = new NumberFormatInfo();
    decimal d = 125501.0235648m;
    nfi.NumberDecimalSeparator = "?";
    s = d.ToString(nfi); //--> 125501?0235648

to have the result of your java version, use the `ToString()` function version with Custom Numeric Format Strings (i.e.: what you called pattern):

s = d.ToString("# ### ##0.0000", nfi);// 1245124587.23     --> 1245 124 587?2300
                                      //      24587.235215 -->       24 587?2352

System.Globalization.NumberFormatInfo

Problem

How would I convert the following code to C# ``` DecimalFormat form String pattern = ""; for (int i = 0; i < nPlaces - nDec - 2; i++) { pattern += "#"; } pattern += "0."; for (int i = nPlaces - nDec; i < nPlaces; i++) { pattern += "0"; } form = (DecimalFormat) NumberFormat.getInstance(); DecimalFormatSymbols symbols = form.getDecimalFormatSymbols(); symbols.setDecimalSeparator('.'); form.setDecimalFormatSymbols(symbols); form.setMaximumIntegerDigits(nPlaces - nDec - 1); form.applyPattern(pattern); ``` EDIT The particular problem is that I do not wish the decimal separator to change with Locale (e.g. some Locales would use ',').

Original source