数字类型

2541 更新于: 2022-05-12 读完约需 14 分钟

概述

一般来说,C#语言中的数字可以分为两种类型:整型和浮点型:

  • 整数类型的数字是没有小数点的整数,它可以是正数也可以是负数。
  • 浮点型是具有一个或多个小数点的数字,它可以是正数也可以是负数。

根据内存中的大小和存储数字的容量,C#为整数类型和浮点类型分别提供了不同的数据类型,如下图所示:

整型数据

整数类型的数字是没有小数点的整数。C#提供了四种整数数据类型,分别为:byteshortintlong

Byte

byte数据类型可以存储0到255之间的数字。它在内存中占用8位。在.NET中对应Byte Struct

sbytebyte类型相似,只是它们存储数字的区间不同,sbyte可以存储负数,它存储-128到127之间的数字。

以下是bytesbyte的使用示例:

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte age1 = 30;     // 正确
            byte age2 = 300;    // 错误
            byte age3 = -20;    // 错误

            sbyte age4 = 50;    // 正确
            sbyte age5 = 500;   // 错误
            sbyte age6 = -50;   // 错误
            sbyte age7 = -500;  // 错误

        }
    }
}

你还可以通过Byte.MinValueByte.MaxValue分别获取到byte的最小值和最大值,如下:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Byte的最小值为:"+Byte.MinValue);
            Console.WriteLine("Byte的最大值为:"+Byte.MaxValue);
        }
    }
}

输出结果为:

Byte的最小值为:0
Byte的最大值为:255

短整型(Short)

短整型(short)是有符号整数,可以存储-32,768到32,767之间的数字。它在内存中占用16位。在.NET中对应Int16

ushortshort类型相似,只是它们存储数字的区间不同,ushort不可以存储负数,它存储0到65,535之间的数字。

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            short s1 = -32768;      // 正确
            short s2 = 32767;       // 正确
            short s3 = 35000;       // 错误

            ushort us1 = 65535;     // 正确
            ushort us2 = -32000;    // 错误
        }
    }
}

整型(Int)

整型(int)是32位有符号整数,可以存储 -2,147,483,648 到 2,147,483,647 之间的数字。它在内存中占用32位。在.NET中对应Int32

uintint类型相似,只是它们存储数字的区间不同,uint不可以存储负数,它存储 0 到 4,294,967,295 之间的数字。

以下是intuint声明变量的示例:

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = -2147483648;    // 正确
            int j = 2147483647;     // 正确
            int k = 4294967295;     // 错误

            uint ui1 = 4294967295;  // 正确
            uint ui2 =-1;           // 错误
        }
    }
}

int数据类型也可以用十六进制和二进制数表示。十六进制数以0x0X开头,从C# 7.2开始,二进制数则以0b0B作为前缀,如下:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int hex = 0x20;
            int binary = 0b_0010_0000;

            Console.WriteLine(hex);
            Console.WriteLine(binary);
        }
    }
}

输出结果为:

32
32

长整型(Long)

整型(long)是64位有符号整数,可以存储 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数字。它在内存中占用64位。在.NET中对应Int64

ulonglong类型相似,只是它们存储数字的区间不同,ulong不可以存储负数,它存储 0 到 18,446,744,073,709,551,615 之间的数字。

以下是longulong声明变量的示例:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            long l1 = -9223372036854775808;
            long l2 = 9223372036854775807;

            ulong ul1 = 18223372036854775808ul;
            ulong ul2 = 18223372036854775808UL;
        }
    }
}

浮点型数据

浮点数是具有一个或多个小数点的正数或负数。C#中有三种不同的浮点数据类型,分别为:浮点数(float)、双精度数(double)和精确十进制数(decimal)。

浮点数(Float)

浮点数(float)可以存储从3.4e−038到3.4e+038的小数。它在内存中占用32位,其中第一位为符号位,后面8位为幂指数,再其后23位为尾数部分。幂指数的范围为(2-127-2128),表示的数据范围为-3.40E+38 ~ +3.40E+38。而尾数为223=8388608,意味着最多可以有七位的有效位,所以表示float的精度为7位。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            float f1 = 123456.5F;
            float f2 = 1.123456f;
            float f3 = 1.123456789f;

            Console.WriteLine(f1);      //123456.5
            Console.WriteLine(f2);      //1.123456
            Console.WriteLine(f3);      //1.1234568
        }
    }
}

注:使用fF作为浮点数的后缀标识。

双精度浮点数(Double)

双精度浮点数(double)可以存储从1.7e−308 到 1.7e+308的小数。它在内存中占用64位,其中第一位为符号位,后面11位为指数为,再其后为52位尾数部分。指数的范围为(2-1023-21024),表示的数据范围为-1.79E+308 ~ +1.79E+308,尾数为252 = 4503599627370496,意味着最多可以有十六位的有效位,所以表示double的精度为16位。

using System;

namespace ConsoleApp1
{
    static 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)

精确十进制数(decimal)可以存储±1.0 x 10-28 到 ±7.9228 x 1028 的小数。它占用内存128位(16个字节)。

备注:C#语言中,可以使用字母mM作为精确十进制数的后缀。

using System;

namespace ConsoleApp1
{
    static class Program
    {
        static void Main(string[] args)
        {
            decimal d1 = 123456789123456789123456789.5m;
            decimal d2 = 1.1234567891345679123456789123m;

            Console.WriteLine(d1);      // 123456789123456789123456789.5
            Console.WriteLine(d2);      // 1.1234567891345679123456789123
        }
    }
}

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

本文永久链接码友网 » C#程序设计基础(入门篇) » 数字类型 分享:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册