如何编写带千位分隔符的数字字面量?C#支持逗号千位分隔吗?
关于逗号作为分隔符的问题
C# 语法不支持使用逗号作为数字字面量的千位分隔符,你示例中的int million = 1,000,000;会触发编译错误,因为逗号在C#中默认被识别为变量声明分隔符、方法参数分隔符等语法符号,无法被解析为数字的一部分。
正确的数字分隔符写法
从C# 7.0版本开始,官方提供了*下划线(_)*作为合法的数字字面量分隔符,支持所有数值类型(int、long、decimal、double、float等),也支持十进制、二进制、十六进制等不同进制的字面量使用,分隔位置无强制要求,完全是为了提升代码可读性设计,编译器会自动忽略下划线不影响最终数值。
常用示例:
// 整型千位分隔 int million = 1_000_000; // 长整型大数值 long totalCount = 12_345_678_901L; // 带小数的decimal类型 decimal goodsPrice = 2_399.99m; // double类型 double precisionValue = 3_141592.6535_8979; // 二进制按字节分隔 int binaryFlag = 0b1101_0010_1011_0001; // 十六进制按字节分隔 int hexValue = 0xAB_3F_2E_10;
低版本C#兼容方案
如果你的项目使用的是C# 7.0以下的旧版本,无法使用下划线分隔符,有两种可选方案:
- 直接书写无分隔符的数字字面量,仅在需要输出显示时,通过格式化方法实现千位分隔效果,示例:
int million = 1000000; // 输出时格式化为带千位分隔的字符串,输出结果为 "1,000,000" string displayStr = million.ToString("N0"); - 升级项目的C#语言版本到7.0及以上,即可直接使用下划线分隔符特性。
内容的提问来源于stack exchange,提问作者OfirD
相关产品推荐
相关产品推荐

