网站首页 > 技术文章 正文
通常,数字可以分为两种类型:整数类型 和 浮点类型。
整数类型数字是不带小数点的整数。它可以是负数或正数。
浮点类型是具有一个或多个小数点的数字。它可以是负数或正数。
C#根据它们在内存中的大小和存储数字的能力,为整数类型和浮点类型包括不同的数据类型。
下图说明了C#中的数字类型。
整数类型
整数类型数字是带小数点的正或负整数。
C#包括四种用于整数的数据类型:字节,短整数,整数和长整数(byte, short, int, long)。
byte:字节数据类型存储从0到255的数字。它在内存中占据8位。byte关键字是.NET中Byte结构的别名。sbyte与byte相同,但是它可以存储-128到127之间的负数。sbyte关键字是.NET中SByte结构的别名。
byte示例代码:
byte b1 = 255;
byte b2 = -128;// 编译时错误:常量值“ -128”不能转换为“字节”
sbyte sb1 = -128;
sbyte sb2 = 127;
Console.WriteLine(Byte.MaxValue);//255
Console.WriteLine(Byte.MinValue);//0
Console.WriteLine(SByte.MaxValue);//127
Console.WriteLine(SByte.MinValue);//-128
//这个代码是会报错误的,刚开始学习的朋友可以在“运行结果”中找答案,自己修改
short:该数据类型是一个有符号整数,可以存储-32,768到32,767之间的数字。它占用16位内存。short关键字是.NET中Int16结构的别名。ushort数据类型是无符号整数。它只能存储0到65535之间的正数。ushort关键字是.NET中UInt16结构的别名。
short示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataTypeShort
{
internal class Program
{
static void Main(string[] args)
{
short s1 = -32768;
short s2 = 32767;
short s3 = 35000;//编译时错误:常量值“ 35000”不能转换为“ short”
ushort us1 = 65535;
ushort us2 = -32000; //编译时错误:常量值“ -32000”不能转换为“ ushort”
Console.WriteLine(Int16.MaxValue);//32767
Console.WriteLine(Int16.MinValue);//-32768
Console.WriteLine(UInt16.MaxValue);//65535
Console.WriteLine(UInt16.MinValue);//0
}
}
}
//这个代码是会报错误的,刚开始学习的朋友可以在“运行结果”中找答案,自己修改。
int数据类型是32位有符号整数。它可以存储从-2,147,483,648到2,147,483,647的数字。
int关键字是.NET中Int32结构的别名。uint是32位无符号整数。uint关键字是.NET中UInt32结构的别名。它可以存储从0到4,294,967,295的正数。
(可选)在数字后使用U或u后缀将其分配给uint变量。
int示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataTpyeInt
{
internal class Program
{
static void Main(string[] args)
{
int i = -2147483648;
int j = 2147483647;
int k = 4294967295; //编译时错误:无法将类型'uint'隐式转换为'int'。
uint ui1 = 4294967295;
uint ui2 = -1; //编译时错误:常量值“ -1”不能转换为“ uint”
Console.WriteLine(Int32.MaxValue);//2147483647最大
Console.WriteLine(Int32.MinValue);//-2147483648最小
Console.WriteLine(UInt32.MaxValue);//4294967295最大
Console.WriteLine(UInt32.MinValue);//0最小
//报错的都是超出范围的
}
}
}
//这个代码是会报错误的,刚开始学习的朋友可以在“运行结果”中找答案,自己修改。
int数据类型也用于十六进制和二进制数。十六进制数字以0x或0X前缀开头。从C#7.2开始,二进制数以0b或0B开头。
long类型是64位有符号整数。它可以存储从-9,223,372,036,854,775,808到9,223,372,036,854,775,807的数字。使用带有数字的l或L后缀将其分配给long类型变量。long关键字是.NET中Int64结构的别名。ulong类型存储从0到18,446,744,073,709,551,615的正数。如果数字后缀为UL,Ul,uL,ul,LU,Lu,lU或lu,则其类型为ulong。uint关键字是.NET中UInt64结构的别名。数字太长不在举反例了。
浮点类型
float数据类型可以存储从3.4ee038到3.4e + 038的分数。它在内存中占用4个字节。float关键字是.NET中Single结构的别名。使用带有文字的 f 或 F 后缀使其成为浮点型。
float示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DateTypeFloat
{
internal class Program
{
static void Main(string[] args)
{
float f1 = 123456.5F;
float f2 = 1.123456f;
Console.WriteLine(f1);//123456.5
Console.WriteLine(f2);//1.123456
}
}
}
double数据类型可以存储从1.7e?308到1.7e + 308的小数。它在内存中占用8个字节。double关键字是.NET中Double结构的别名。使用带文字的 d 或 D 后缀使其成为双精度型。
double示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataTypeDouble
{
internal class Program
{
static void Main(string[] args)
{
double d1 = 12345678912345.5d;
double d2 = 1.123456789123456d;
Console.WriteLine(d1);//12345678912345.5
Console.WriteLine(d2);//1.123456789123456
}
}
}
decimal 数据类型可以存储从±1.0 x 10-28到±7.9228 x 1028的小数。它在内存中占据16个字节。decimal 是.NET中Decimal结构的关键字别名。decimal 类型比浮点和双精度类型具有更高的精度和更小的范围,因此适用于财务和货币计算。使用带有文字的 m 或 M 后缀使其成为 decimal 类型。
decimal示例代码1:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace DataTypeDecimal
{
internal class Program
{
static void Main(string[] args)
{
decimal d1 = 123456789123456789123456789.5m;
decimal d2 = 1.1234567891345679123456789123m;
decimal d3 = 1.0;//不带后缀M/
decimal d4 = 1.0m;
Console.WriteLine(d1);
Console.WriteLine(d2);
Console.WriteLine(d3);
Console.WriteLine(d4);
}
}
}
//这个代码是会报错误的,刚开始学习的朋友可以在“运行结果”中找答案,自己修改。
decimal示例代码2:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace DataTypeDecimal
{
internal class Program
{
static void Main(string[] args)
{
decimal d1 = 123456789123456789123456789.5m;
decimal d2 = 1.1234567891345679123456789123m;
decimal d3 = 1.0M;//不带后缀M/
decimal d4 = 1.0m;
Console.WriteLine(d1);
Console.WriteLine(d2);
Console.WriteLine(d3);
Console.WriteLine(d4);
}
}
}
猜你喜欢
- 2024-11-12 C#-练习题 014(c#程序题及答案)
- 2024-11-12 C# 类型转换(c类型转换有哪三种形式)
- 2024-11-12 C#-无参数有返回值的方法 060(有参无返回值 c语言)
- 2024-11-12 C#中的值类型和引用类型(c# 引用类型)
- 2024-11-12 abelkhan中的rpc框架(rpc框架应用场景)
- 2024-11-12 C#编程零基础到入门学习-C# 值类型和引用类型(4-8)
- 2024-11-12 2.6 C#的常用关键字和预定义类型(c#预留关键字)
- 2024-11-12 C#_图片拖拽(c#窗体图片移动)
- 2024-11-12 数据类型 - C#入门教程(c#常见数据类型)
- 2024-11-12 C#中堆栈(Stack)和堆(Heap)的区别——第一部分
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)