【问题标题】:Set Numbering Format of C# application to Indian numbering System将 C# 应用程序的编号格式设置为印度编号系统
【发布时间】:2018-02-19 06:06:41
【问题描述】:

我的 C# 应用程序中有许多带有 int、decimal 变量的类。 请考虑以下示例。

public class Employee
{
    decimal TotalSalary;
    public decimal Salary
    {
        get
        {
            return TotalSalary;
        }
        set
        {
            TotalSalary = value;
        }
    }
    public string GetSalary()
    {
        return TotalSalary.ToString();
    }

}

public class Contract
{
    Employee emp1 = new Employee();

    public void ProcessSalary()
    {
        emp1.Salary = 100000;
        SendToLabel(emp1.GetSalary());
    }
}

在上面的例子中,每当我在我的应用程序中使用任何十进制/整数变量的 "ToString" 时,它都应该给我印度编号格式的数字,如下所示。

100000 应该呈现为 1,00,000

10000 应该呈现为 10,000

这应该在我的 C# .NET 应用程序中全局发生。 我可以在 global.asax 页面中使用 CultureInfo 吗?

现在我正在使用以下代码格式化日期。

 CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
        newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
        newCulture.DateTimeFormat.DateSeparator = "-";
        Thread.CurrentThread.CurrentCulture = newCulture;

【问题讨论】:

标签: c# .net formatting numbers


【解决方案1】:

以下代码将对您有用,

public string GetSalary()
{
    CultureInfo inr = new CultureInfo("hi-IN");
    return string.Format(inr, "{0:#,#}", TotalSalary);
}

【讨论】:

  • 嗨,非常感谢,有没有办法从该字符串中隐藏卢比符号。
  • 请检查更新后的答案。这将删除卢比符号。
【解决方案2】:

每当我在我的应用程序中使用任何十进制/整数变量的“ToString”时,它都应该给我印度编号格式的数字

您还可以创建一个新方法作为 decimalint 类型的扩展:

public static class MyExtensions
{
    public static string MyOutput(this decimal number)
    {
        return number.ToString("#,#.##", new CultureInfo(0x0439));
    }

    public static string MyOutput(this int number)
    {
        return number.ToString("#,#", new CultureInfo(0x0439));     
    }       
}

全部culture codes供进一步参考。

然后,您可以在整个程序中将它用于decimal/int 类型的变量:

public string GetSalary()
{
    return TotalSalary.MyOutput();
}

输出:decimal asd = 1000000.23m;

10,00,000.23

【讨论】:

  • 非常感谢,这正是我需要的。
  • @PrasanthKumar 非常欢迎您。不幸的是,您不能覆盖 ToString 方法。但这就是扩展方法的用途
  • 是的,明白了,作为一次性工作,我将在整个应用程序中替换所有整数和十进制变量的 ToString()。
【解决方案3】:

GetSalary 的签名会是这样的:

public string GetSalary()
{
    return String.Format("{0:n}", TotalSalary);
}

Working Example

如果您想将小数四舍五入为3 数字,您可以使用"{0:n3}"

【讨论】:

  • 我试过了,10000000 应该呈现为 1,00,00,000.00,但它给了我 10,000,000.00。另外我想知道如何在全球范围内完成这项工作,有没有办法可以覆盖十进制变量的“ToString()”函数,或者可以使用 CultureInfo 在 global.asax 文件中定义它。我需要这个,因为在我的整个应用程序中有许多具有 int 和 decimal 变量的类。
猜你喜欢
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 2011-09-05
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
相关资源
最近更新 更多