C#编程基础第十课:C#中的常用数据类型转换:隐式转换、显式转换、Convert类转换等

版权声明:王迪 https://blog.csdn.net/dnruanjian/article/details/84770551

知识点:类型转换、数值类型间的转换、隐式类型转换、显式类型转换、数值类型和string类型的转换、Convert类转换。

1、数据类型类型转换

理解:从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。C#有多种数据类型,在使用各种类型的数据时,有时候需要将一种类型的数据转换为另一种类型,这就涉及到数据类型转换的方法。

为什么需要进行数据类型转换?

因为计算机对不同的数据类型有不同的保存方式,例如:int(整型) 类型在32位计算机中,占4位。而double(双精度)类型在32位计算机中,占8位。当高位转向低位的时候,如果不进行类型转换,就会造成数据溢出。为保护数据信息,需要进行数据类型转换。

不同数据类型,在内存中占用空间不一样

数据类型 16位编译器 32位编译器 64位编译器
char 1byte 1byte 1byte
int 2byte 4byte 4byte
float 4byte 4byte 4byte
double 8byte 8byte 8byte
short int 2byte 2byte 2byte
unsigned int 2byte 4byte 4byte
long 4byte 4byte 8byte
unsigned long 4byte 4byte 8byte
long long 8byte 8byte 8byte

通俗理解:酒店单人间和豪华套间,占用空间不一样(房间面积不一样),如果要把两个房间的客人互换,需要人为进行转换(调解)。

2、数值类型间的转换

1.1 隐式类型转换

在数值类型中,将小的数据类型数据,赋值给大的数据类型变量时,就会发生隐式类型转换,也叫自动类型转换。

            float a = 100;
            double b = 10.5f;

在上面两个例子中,int类型的数据100,可以自动转换为float类型。float类型的数据10.5,可以自动转换为double类型。

1.2 显式转换

如果将大的数据类型数据,赋值给小的数据类型变量,就必须进行显示类型转换,也叫强制转换。

如:

将代码进行修改:int height = (int)number;

大数据类型转换为小数据类型后,会丢失精度。如例子中的double类型数据,转换为int类型后,height的值是175.

思考:将double类型转换为float类型,如何进行?怎么把float类型转换为int类型?

3、数值类型和string类型的转换

第一种,将string类型转换为数值类型。

语法:数值类型 变量名 = 数值类型.Parse(字符串变量或字符串);

            string a = "123";       //声明一个字符串变量a,并赋初值123
            int b = int.Parse(a);   //将字符串变量a,强制转换为int类型后,赋值给int类型变量b
            int c = int.Parse("11");  //将字符串11,强制转换为int类型后,赋值给int类型变量c
            float d = float.Parse("12.1"); //将字符串12.1,强制转换为float类型后,赋值给float类型变量d
            double e = double.Parse("123.5");//将字符串123.3,强制转换为double类型后,赋值给double类型变量e

            int age = int.Parse(Console.ReadLine());//将用户输入的数据信息,强制转换为int类型后,再赋值给变量age(控制台接收的数据类型,默认是string类型)

注意:

  • 将string类型转换为数值类型的前提是,string类型本身的数据是数字。
  • Parse()方法,只能将字符串转换为数值。

第二种:将数值类型转换为string类型

            int age = 18;
            string str = age.ToString();//方法一:ToString()方法
            string str1 = age + "";       //方法二:用加号连接一个空字符

4、使用Convert类进行类型转换

使用Conver类可以进行任意类型的转换。

方法 说明
Convert.ToInt32()      转换为整型(int)
Convert.ToChar()      转换为字符型(char)
Convert.ToString()      转换为字符串型(string)
Convert.ToDateTime()      转换为日期型(datetime)
Convert.ToDouble()      转换为双精度浮点型(double)
Conert.ToSingle()      转换为单精度浮点型(float)
            int age = 18;
            double height=175.5d;
            float result = 10.5f;
            string str = Convert.ToString(age);
            int a = Convert.ToInt32(height);
            float c = Convert.ToSingle(99.9);//方法里可以是变量,也可以是具体数据
            double d = Convert.ToDouble(result);

代码练习:输入一个小数,进行四舍五入后输出

提示:将小数转换为int类型后,会丢失精度。将转换前的小数-转换后的整数=原来的小数点后面的数字。用0.5进行大小比较,进行四舍五入。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入一个小数:");
            double number1 = double.Parse(Console.ReadLine());//将用户输入的数据强制转换为double类型后,赋值给变量number1
            int number2 = Convert.ToInt32(number1);//将number1的数据强制转换成int类型后,赋值给变量number2
            double a = number1 - number2;//求两个数字之间的差,结果是小数,赋值给double类型变量a
            int b;//声明一个变量b,用来存储四舍五入后的数据
            if (a>=0.5)//四舍五入的条件:小数点后的数据大于等于0.5,结果+1
            {
                b = number2 +1;
            }
            else
            {
                b = number2;
            }
            Console.WriteLine("这个数字四舍五入后是"+b);

            Console.ReadLine();
        }
    }
}

运行结果:

===================这里是结束分割线========================

猜你喜欢

转载自blog.csdn.net/dnruanjian/article/details/84770551