簡體   English   中英

在C#中復制Java的DecimalFormat

[英]Replicating Java's DecimalFormat in C#

我正在嘗試復制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 ();
    }
}

實際上,最簡單的方法是使用ToString("N2"); 其中2替換為所需的小數位數。

如果您確實想要最小值和最大值,則還可以使用IFormattableToString("#,#.00##", CultureInfo.CurrenCulture); IFormattable 這將為您提供一個數字,該數字最少要有兩個小數位,最多要有四個小數,並且在組成部分上用逗號數字分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM