C#如何将整数字符串转为带千分位小数点分隔的格式?
在C#中实现千分位分隔(点作为分隔符)的方法
当然有啦!C#自带的格式化工具就能轻松搞定这个需求,不过默认千分位分隔符是逗号,咱们只需要调整成点就行。下面给你两种实用的实现方式:
方法一:利用特定文化的格式设置
德国地区(de-DE)的数字格式刚好是用点作为千分位分隔符,直接用这个文化信息就能快速实现:
// 示例1:处理"123456" string input1 = "123456"; if (long.TryParse(input1, out long num1)) { string result1 = num1.ToString("#,0", new System.Globalization.CultureInfo("de-DE")); Console.WriteLine(result1); // 输出:123.456 } // 示例2:处理"1000000" string input2 = "1000000"; if (long.TryParse(input2, out long num2)) { string result2 = num2.ToString("#,0", new System.Globalization.CultureInfo("de-DE")); Console.WriteLine(result2); // 输出:1.000.000 }
方法二:自定义数字格式信息
如果不想依赖特定地区的文化设置,也可以手动指定分隔符,灵活性更高:
string input = "1000000"; if (long.TryParse(input, out long number)) { var customFormat = new System.Globalization.NumberFormatInfo(); customFormat.NumberGroupSeparator = "."; // 设置千分位分隔符为点 // 小数分隔符这里可以随便设,因为咱们处理的是整数 customFormat.NumberDecimalSeparator = ","; string formattedStr = number.ToString("#,0", customFormat); Console.WriteLine(formattedStr); // 输出:1.000.000 }
处理超长整数的情况
如果你的输入字符串长度超过了long的范围,可以用BigInteger来处理,格式化逻辑是一样的:
string bigInput = "12345678901234567890"; if (System.Numerics.BigInteger.TryParse(bigInput, out var bigNum)) { var formatInfo = new System.Globalization.NumberFormatInfo(); formatInfo.NumberGroupSeparator = "."; string bigResult = bigNum.ToString("#,0", formatInfo); Console.WriteLine(bigResult); // 输出:12.345.678.901.234.567.890 }
小提醒
记得用TryParse而不是直接Parse哦,这样能避免输入无效整数时抛出异常,让代码更健壮。
内容的提问来源于stack exchange,提问作者Dev Db
相关产品推荐
相关产品推荐

