我正在尝试复制 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);
,它会为您提供一个最少两位小数、最多四位小数的数字,并在整数部分上使用逗号数字分隔符。
关于c# - 在 C# 中复制 Java 的 DecimalFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924242/