Репликация Java десятичного формата в C # - PullRequest
1 голос
/ 27 мая 2010

Я пытаюсь скопировать подмножество класса Java DecimalFormat. Ниже то, что я придумал. Это выглядит правильно для всех?

public class DecimalFormat : NumberFormat
{
    int _maximumFractionDigits;
    int _minimumFractionDigits;

    string _format;

    void RebuildFormat ()
    {           
        _format = "{0:0.";

        _format += new string ('0', _minimumFractionDigits);
        if (_maximumFractionDigits > _minimumFractionDigits) {
            _format += new string ('#', _maximumFractionDigits -
                         _minimumFractionDigits);
        }

        _format += "}";
    }

    public override string format (object value)
    {
        return string.Format (_format, value);
    }

    public override void setMaximumFractionDigits (int n)
    {
        _maximumFractionDigits = n;
        RebuildFormat ();
    }

    public override void setMinimumFractionDigits (int n)
    {
        _minimumFractionDigits = n;
        RebuildFormat ();
    }

    public override void setGroupingUsed (bool g)
    {
    }

    public static NumberFormat getInstance ()
    {
        return new DecimalFormat ();
    }
}

1 Ответ

1 голос
/ 27 мая 2010

На самом деле, самый простой способ - использовать ToString("N2");, где 2 заменяется желаемым количеством десятичных разрядов.

Если вы действительно хотите минимальное и максимальное значения, вы также можете использовать IFormattable ToString("#,#.00##", CultureInfo.CurrenCulture);, что даст вам число с минимум двумя десятичными знаками и максимум четырьмя, с разделителями запятых на неотъемлемой части. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...