[英]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替換為所需的小數位數。
如果您確實想要最小值和最大值,則還可以使用IFormattable
的ToString("#,#.00##", CultureInfo.CurrenCulture);
IFormattable
這將為您提供一個數字,該數字最少要有兩個小數位,最多要有四個小數,並且在組成部分上用逗號數字分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.