编写 C# 代码时,我们时常会用到很大的数字,例如下面定义的变量:

const long loops = 50000000000;

您能快速读出这是多少吗?是不是还是会有很多人把光标定位到最后一位,然后按键盘上的向左键一个一个往上数:个、十、百、千、万、十万、百万、千万、亿、十亿、百亿、千亿……

数字的这种写法,严重影响了它的可读性。所以人们才会发明了诸如千分位之类的写法,上面的数字用千分位可以写作 50,000,000,000,这样子是不是可读性就强多了?不过这是西方人的写法。
如果按照我们中国人的习惯,可以写成 500,0000,0000,是不是一眼就可以读出来是五百亿了?

那么问题来了,我们能不能在代码中这么写来增强数字的可读性呢?
答案是肯定的,不过要稍作改变 —— 把逗号换成下划线 _

const long loops = 500_0000_0000;
// 或者
const long loops = 50_000_000_000;

这是从 C# 7.0 开始支持的功能。它的用法和 Java 及 Python 中的用法是类似的。

当我们使用下划线 _ 作为数字分隔符时,可以把它添加在数字文本中除了第一个字符和最后一个字符之外的任何位置。将下划线添加到长数字的不同的位置,就形成了不同的分组,不同的分组在不同的情景中可能会有不同的意义。比如我们在使用十进制、十六进制或二进制记数法声明数字时,可以加上下划线 _ 字符,使数字更易读懂。

我们来举个例子,定义下面一组数字:

int bin = 0b1001_1010_0001_0100;// 二进制表示
int hex1 = 0x64_95_ED;          // 十六进制表示
int hex2 = 0x_64_95_ED;         // 十六进制表示
int dec1 = 1_000_000;           // 十进制
int dec2 = 100_0000;            // 十进制
int weird = 1_2__3___4____5_____6______7_______8________9;
double real = 1_000.111_1e-5;
decimal d = 1_222_345;

上面的这些数字声明编译之后实际运行的代码是:

int bin = 39444;
int hex1 = 6591981;
int hex2 = 6591981;
int dec1 = 1000000;
int dec2 = 1000000;
int weird = 123456789;
double real = 0.010001111;
decimal d = 1222345m;

可以看出,虽然表示结果一样,但是适当地添加了下划线分隔符的写法,大大增加了我们读数的容易程度。

C# 中的任意数字都可以使用下划线分隔,两个连续数字字符之间允许出现多个下划线。 但是有些时候是要注意的,比如在小数和指数中使用时,不能出现在小数点(10_.0)的前后、指数字符(1.1e_1)的前后和类型说明符(10_f)的前面,等等……

我们来看一些错误的用例,下面的用法都是错误的:

double d1 = 1.1_e1;     //不能出现在指数字符前后
float f1 = 10_f;        //不能出现在类型说明符前面
double d2 = 10_.0;      //不能出现在小数点前后
float pi1 = 3_.1415F;   //不能出现在小数点前后
float pi2 = 3._1415F;   //不能出现在小数点前后
int x1 = 52_;           //不能出现在第一个字符和最后一个字符
int x2 = 0x52_;         //不能出现在第一个字符和最后一个字符
int x3 = 0_x52;         //不能出现在 0x 之间

总结

在定义较大的数字时,使用下划线 _ 作为分隔符,可以让较长的数字更具可读性。这个功能虽然很微不足道,但当你用到它的时候,易读性会让你的心情愉快很多,不是吗?

下划线分隔符 _ 在语义上对运行没有任何影响,因为它在编译的时候就被编译器忽略了。

作者 :技术译民
出品 :技术译站(https://ITTranslator.cn/)

C# 中的数字分隔符 _相关推荐

  1. c++从字符串中提取数字求和_【函数应用】单元格文本内提取数字并求和

    本篇的主题是将单元格内一串文本,找出所有数字并求和,如下图. 难度较高,新手建议仅了解下,先学会数组运用,再研究此知识点. 废话少说,步入正题. 重点说明:本篇只针对文本内整数的数字进行提取并求和,如 ...

  2. a在java中代表数字几_字母表示数a可以表示什么数字

    <用字母表示数>教案云天阁用字表示教案 教学目标:1.使学生在现实情境中理解并学会用字母表示数,会用含有字母的式子表示数量.数量关系和计算公式,学会含有字母的乘法算式的简便写法. 2.使学 ...

  3. word文档怎么给数字加千分符_如何给word文档中的数字添加千分位分隔符

    展开全部 准备工具/材料:windows10Build10158版本,Excel 2013版本. 1.此演示操作中使用的办公软件是Excel 2013版本. 2.windows10Build10158 ...

  4. java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字

    在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...

  5. mardown 标题带数字_标题中带有数字的故事更成功吗?

    mardown 标题带数字 统计 (Statistics) I have read a few stories on Medium about writing advice, and there we ...

  6. python3提取字符串中的数字_如何在Python中从字符串中提取数字?

    14 回复 | 直到 1 年前 1 430 3 年前 如果只想提取正整数,请尝试以下操作: >>> str = "h3110 23 cat 444.4 rabbit 11 ...

  7. word文字中的数字怎么自动变化_【天华学术】不会为毕业论文“美颜”,怎么办?...

    春天到了,毕业的脚步近了.作为一名优(tong)秀(ku)的准毕业生,相信不少人已经在大量的实验数据.小山般的文献资料中埋头创作出了一篇万字的毕业论文.看着辛辛苦苦写出的论文终稿,却发现它" ...

  8. html中写自增数字,WPS word中数字怎么自增 如何在word中设置数字的千位分隔符

    选中某行,列或者某一部分,选择菜单栏的"行和列"->"填充"选项,选择序列选项. 在弹出的窗口中设置你需要的选项. WPS文字怎样自动增加数字 如何在WP ...

  9. excel复制数字乱码_仅在Excel中复制数字

    excel复制数字乱码 Someone emailed me recently, asking how to copy just the numbers, from a column that als ...

最新文章

  1. Java学习总结:40(国际化)
  2. 25个别出心裁的简历设计作品欣赏
  3. 从sql中image类型字段中导出图片
  4. Linux之文档与目录结构
  5. 我对香港数字生活的一些观察
  6. java多线程编程基础
  7. 《算法图解》——数组和链表
  8. C++ Gotchas: Avoiding Common Problems in Coding and Design
  9. Vue双向绑定的实现原理系列(三):监听器Observer和订阅者Watcher
  10. IE调试网页之二:F12 开发人员工具入门 (Windows)
  11. PHP处理数据为echarts多条折线图格式
  12. 光线的方向:顺光、逆光、侧光、侧顺光、侧逆光、顶光、底光
  13. Vulkan开发环境配置 Win10+VS2019
  14. 从零开始搭建物联网平台(三)数模设计
  15. 漫画:博弈论系列 之 囚徒困境
  16. 携宠旅行逐渐成为新一代宠物主“刚需”,宠物友好型酒店呈现稀缺
  17. 密码在智能汽车数据安全领域的应用研究报告
  18. C语言xio习笔记1递归函数实例
  19. 在matlab用泰勒级数求,急 在matlab中写个用泰勒级数计算arctan(x)的方程
  20. 关于程序员秃顶和预防的小知识

热门文章

  1. Rails 开发小贴士积累
  2. CRM学习笔记(一)
  3. 一个女孩子对老公/男朋友的要求
  4. 如何将iPhone应用程序从应用程序库移动到主屏幕
  5. quantum_如何从Firefox Quantum删除Pocket
  6. linux系统输入指令,详解linux系统输入输出管理和vim的常用功能
  7. 【No.7 C++对象的构造与析构时间】
  8. 《SAP入门经典(第4版•修订版)》——2.5 4种视角相互结合
  9. linux 安装apache http server
  10. 学号20145209《信息安全系统设计基础》第11周学习总结