c# - 在 C# 中复制 Java 的 DecimalFormat

标签 c# java .net formatting

我正在尝试复制 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);,它会为您提供一个最少两位小数、最多四位小数的数字,并在整数部分上使用逗号数字分隔符。

关于c# - 在 C# 中复制 Java 的 DecimalFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924242/

相关文章:

c# - ExecuteNonQuery 中的 SqlException

c# - 如何在 Xamarin 中添加计时器?

java - Spring QueryByExampleExecutor 空结果

java - 为什么我不能注入(inject)非 bean 抽象父类的子 bean 类

.net - 通过 .NET Framework 类以编程方式使用 XSD.exe 工具功能(从 XSD 架构生成类)?

c# - 试图获取文本框的值

c# - EF6 PK 和 FK 约束命名约定

java - 使用抽象 Spring bean 作为构造函数参数

java - WPF是不是一个了不起的东西?

c# - 有没有办法从页面方法中删除静态声明?