unity的C#学习——浮点常量、字符常量和字符串常量
创始人
2025-06-01 19:58:16

浮点常量

在C#中,一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。浮点常量可以使用以下几种表示形式(大写与小写效果等价):

  1. 十进制表示法:使用小数点来表示浮点数(默认为double类型),例如:3.14、0.5、-1.23等等。

  2. 科学计数法:使用e或E来表示10的幂次方(默认为double类型),例如:1.2e-3表示0.0012,2.5E2表示250。

  3. 后缀f或F:用于标识浮点常量(float类型),例如:3.14f、0.5F、-1.23f等等。

  4. 后缀m或M:用于标识十进制浮点常量(decimal类型),例如:1.2m、0.5M、-1.23m等等。

例如,以下代码展示了C#中浮点常量的不同表示形式:

float f1 = 3.14f;
double d1 = 2.5E2;
decimal d2 = 1.2m;

请注意,在不使用任何后缀的情况下声明浮点常量时,默认为double类型。如果想要声明float类型的浮点常量,需要使用后缀f或F。同样,如果想要声明decimal类型的浮点常量,需要使用后缀m或M。

与float和double类型相比,decimal类型有以下不同之处:

  1. 精度更高:decimal类型的数值可以提供更高的精度,可以存储28位有效数字,而float和double类型分别只能存储7位和15位有效数字。
  2. 数值范围更小:decimal类型的数值可以表示比float和double类型更小的数值范围,它的取值范围约为1.0×10−281.0 \times 10^{-28}1.0×10−28 ~ 7.9×10287.9 \times 10^{28}7.9×1028,而float和double类型的取值范围分别为1.5×10−451.5 \times 10^{-45}1.5×10−45 ~ 3.4×10383.4 \times 10^{38}3.4×1038和5.0×10−3245.0 \times 10^{-324}5.0×10−324 ~ 1.7×103081.7 \times 10^{308}1.7×10308。
  3. 运算精度更高:在进行运算时,decimal类型的数值可以避免一些常见的精度问题,例如float类型的数值可能会因为精度问题产生舍入误差,而decimal类型的数值可以避免这种问题。

有效数字(significant digits)是指数值中的数字中不包括前导零和末尾的零的数字,它们是对数值精度的一种度量。例如,在数值3.14159中,有效数字为6。在数值0.00314中,有效数字为3。

  • 有效数字与数值范围没有关系,数值范围限制的主要是科学计数法表示时的指数大小,而有效数字限制的主要是十进制表示法时最大位数。
  • 对于decimal类型,它可以存储28个有效数字,也就是说,它可以准确地表示28位小数位的数值。这比float和double类型的有效数字要多得多,float类型可以提供6-7位的有效数字,而double类型可以提供15-16位的有效数字。因此,在需要高精度计算时,使用decimal类型可以避免精度损失。

字符常量

字符常量是括在单引号里,例如'x',且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 '\t')或者一个通用字符(例如 '\u02C0')。

通用字符是一种Unicode字符,用于表示其他字符集中的字符。这些字符包括控制字符、标点符号、数学符号等。通用字符以反斜杠加上一个u和4个十六进制数字表示,其中这4个数字表示Unicode字符的代码点。

下面是一些C#中使用通用字符的示例:

using System;class Program {static void Main(string[] args) {Console.WriteLine('\u0020'); // 空格字符Console.WriteLine('\u0021'); // 感叹号字符Console.WriteLine('\u00A9'); // 版权符号Console.WriteLine('\u2190'); // 向左箭头Console.WriteLine('\u2603'); // 雪花字符}
}

输出如下:

!
©

转义字符(序列)和通用字符虽然有相似之处,但不是一个概念,以下是常见的转义字符:

转义序列含义
\\\ 字符
\’’ 字符
\"" 字符
\?? 字符
\aAlert 或 bell
\b退格键(Backspace)
\f换页符(Form feed)
\n换行符(Newline)
\r回车
\t水平制表符 tab
\v垂直制表符 tab
\ooo一到三位的八进制数
\xhh . . .一个或多个数字的十六进制数

以下是转义序列字符的实例:

namespace EscapeChar
{class Program{static void Main(string[] args){Console.WriteLine("Hello\tWorld\n\n");Console.ReadLine();}}
}

当上面的代码被编译和执行时,它会产生下列结果:Hello World


字符串常量

字符串常量是括在双引号 “” 里,或者是括在 @“” 里(之前提到过@符号用于消除转义序列的作用)。字符串常量包含的字符与字符常量相似,可以是:普通字符转义序列通用字符

使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。

这里是一些字符串常量的实例,下面所列的各种形式表示相同的字符串:

string a = "hello, world";                  // hello, world
string b = @"hello, world";               // hello, world
string c = "hello \t world";               // hello     world
string d = @"hello \t world";               // hello \t world
string e = "Joe said \"Hello\" to me";      // Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me";   // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt";   // \\server\share\file.txt
string h = @"\\server\share\file.txt";      // \\server\share\file.txt
string i = "one\r\ntwo\r\nthree";
string j = @"one
two
three";

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...