我需要将comma
分隔格式的数字转换为C#
。
例如:
1000 to 1,000
45000 to 45,000
150000 to 1,50,000
21545000 to 2,15,45,000
如何在C#
中实现这一目标?
我尝试了以下代码:
int number = 1000;
number.ToString("#,##0");
但它不适用于lakhs
。
答案 0 :(得分:6)
我想您可以通过根据需要创建自定义数字格式信息来实现此目的
NumberFormatInfo nfo = new NumberFormatInfo();
nfo.CurrencyGroupSeparator = ",";
// you are interested in this part of controlling the group sizes
nfo.CurrencyGroupSizes = new int[] { 3, 2 };
nfo.CurrencySymbol = "";
Console.WriteLine(15000000.ToString("c0", nfo)); // prints 1,50,00,000
如果专门针对数字,那么你也可以
nfo.NumberGroupSeparator = ",";
nfo.NumberGroupSizes = new int[] { 3, 2 };
Console.WriteLine(15000000.ToString("N0", nfo));
答案 1 :(得分:2)
这是与你的add commas in thousands place for a number
类似的主题这是与我完美配合的解决方案
String.Format("{0:n}", 1234);
String.Format("{0:n0}", 9876); // no decimals
答案 2 :(得分:2)
如果你想要独一无二,做一些你不需要的额外工作是我为整数创建的函数你可以在你想要的任何时间间隔放置逗号,只需为每千分之一的逗号加3或者你也可以做2或6或任何你喜欢的。
public static string CommaInt(int Number,int Comma)
{
string IntegerNumber = Number.ToString();
string output="";
int q = IntegerNumber.Length % Comma;
int x = q==0?Comma:q;
int i = -1;
foreach (char y in IntegerNumber)
{
i++;
if (i == x) output += "," + y;
else if (i > Comma && (i-x) % Comma == 0) output += "," + y;
else output += y;
}
return output;
}
答案 3 :(得分:1)
你试过了吗?
ToString("#,##0.00")
答案 4 :(得分:0)
快速而肮脏的方式:
Int32 number = 123456789;
String temp = String.Format(new CultureInfo("en-IN"), "{0:C0}", number);
//The above line will give Rs. 12,34,56,789. Remove the currency symbol
String indianFormatNumber = temp.Substring(3);
答案 5 :(得分:0)
一个简单的解决方案是将一种格式传递给 ToString()方法:
string format = "$#,##0.00;-$#,##0.00;Zero";
decimal positiveMoney = 24508975.94m;
decimal negativeMoney = -34.78m;
decimal zeroMoney = 0m;
positiveMoney.ToString(format); //will return $24,508,975.94
negativeMoney.ToString(format); //will return -$34.78
zeroMoney.ToString(format); //will return Zero
希望这会有所帮助,