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

问题描述 投票:0回答:4

我的 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;
c# .net formatting numbers
4个回答
3
投票

以下代码将对您有用,

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

2
投票

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

您还可以创建一个新方法作为类型

decimal
int
:

的扩展
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));     
    }       
}

所有文化代码以供进一步参考。

然后您可以在整个程序中将其用于

decimal/int
类型的变量:

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

输出:对于

decimal asd = 1000000.23m;

10,00,000.23


0
投票

GetSalary
的签名会是这样的:

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

工作示例

如果您想将小数四舍五入为

"{0:n3}"
位,您可以使用
3


0
投票

以下印度编号系统中的数字格式化方法将精度保持在小数点后两位。

工作示例: https://dotnetfiddle.net/qLotLP

public static string IndiaNumberFormat(string input = null)
{
    if (input == null)
    {
        return string.Empty;
    }
    return string.Format(new System.Globalization.CultureInfo("en-IN", false), "{0:#,#.##}", Convert.ToDouble(input));
}
© www.soinside.com 2019 - 2024. All rights reserved.