将C#应用程序的编号格式设置为印度编号系统

时间:2018-02-19 06:06:41

标签: c# .net formatting numbers

我的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());
    }
}

在上面的例子中,每当我在我的应用程序中使用任何decimal / int变量的“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;

3 个答案:

答案 0 :(得分:2)

以下代码对您有用,

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

答案 1 :(得分:2)

  

每当我使用" ToString"在我的应用程序中的任何decimal / int变量,它应该给我印度编号格式的数字

您还可以将新方法设为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

答案 2 :(得分:0)

GetSalary的签名将如下:

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

Working Example

如果要将小数舍入为"{0:n3}"位,则可以使用3