int数据类型3种转换方式对比

int类型是几种基本的数据类型之一,在项目开发中我们经常需要将其它数据类型转为int类型使用。
我们经常会看见如下三种其他类型转为int类型的方式:

 int num1 = (int)num;
 int num2 = int.Parse(strNum);
 int num3 = Convert.ToInt32(strNum);

那着三种转换方式之间有哪些不同呢?今天我们一起来看看。(这里,值本身不为数值的数据如“老王”,“AA”等本身不可转为int类型数据的情况不在下文提及)。我们分别通过objectfloatdoublestring四种类型转换为int类型来看看转换后的值有什么变化
方式一:(int)

  • object
    object 的值为一个整数
            object num2 = 9;
            int intNum2 = (int)num2;
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");

在这里插入图片描述
object的值为一个小数

            object num3 = 9.1;
            int intNum3 = (int)num3;
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");

无语法错误,但执行报错
在这里插入图片描述
object的值为一个字符串

            object num7 = "9";//整数字符串
            int intNum7 = (int)num7;
            Console.WriteLine($"{num7}被经过转换后值为{intNum7}");

与,小数一样,编译不报错,但是运行报错。
在这里插入图片描述

  • float
    代码:
			float num2 = 9;
            int intNum2 = (int)num2;
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            float num3 =9.1F;
            int intNum3 = (int)num3;
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            float num4 = 9.5F;
            int intNum4 = (int)num4;
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            float num5 = 9.6F;
            int intNum5 = (int)num5;
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            float num6 = 8.6F;
            int intNum6 = (int)num6;
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");

执行效果:
在这里插入图片描述

  • double
  • 代码
 			double num2 = 9;
            int intNum2 = (int)num2;
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            double num3 =9.1;
            int intNum3 = (int)num3;
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            double num4 = 9.5;
            int intNum4 = (int)num4;
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            double num5 = 9.6;
            int intNum5 = (int)num5;
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            double num6 = 8.6;
            int intNum6 = (int)num6;
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");
  • 执行效果
    在这里插入图片描述
  • string----语法错误——编写即报错
    无法将string类型的数据使用int强制转换
    方式二:parse()
    F12查看int.parse(),不难发现,parse方法只允许传递string类型的数据进行数据转换。
    在这里插入图片描述
    parse()方法进行数据类型转换 string->int
    代码:
            string num2 = "9";
            int intNum2 = int.Parse(num2);
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            string num3 ="9.1";
            int intNum3 = int.Parse(num3);
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            string num4 = "9.5";
            int intNum4 = int.Parse(num4);
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            string num5 = "9.6";
            int intNum5 = int.Parse(num5);
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            string num6 = "8.6";
            int intNum6 = int.Parse(num6);
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");

执行效果:
执行到对9.1等非整形的数值的字符串进行转换的时候会报错,
在这里插入图片描述
int.parse():只可以对整形熟知的字符串进行转换。

方式三:Convert.ToInt32()

  • object
    代码:
//object---数值(int,float,double,decimal)
            object num2 = 9;
            int intNum2 = Convert.ToInt32(num2);
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            object num3 = 9.1;
            int intNum3 = Convert.ToInt32(num3);
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            object num4 = 9.5;
            int intNum4 = Convert.ToInt32(num4);
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            object num5 = 9.6;
            int intNum5 = Convert.ToInt32(num5);
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            object num6 = 8.6;
            int intNum6 = Convert.ToInt32(num6);
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");
            object num7 = 8.5;
            int intNum7 = Convert.ToInt32(num7);
            Console.WriteLine($"{num7}被经过转换后值为{intNum7}");
            //object---字符串(内容为数字的字符串)
            object num8 = "9";//整数字符串
            int intNum8 = Convert.ToInt32(num8);
            Console.WriteLine($"字符串{num8}被经过转换后值为{intNum8}");
            object num10 = "9.1";//小数字符串
            int intNum10 = Convert.ToInt32(num10);
            Console.WriteLine($"字符串{num10}被经过转换后值为{intNum10}");//这转换会出错

执行结果:
在这里插入图片描述

  • float
    代码:
			float num2 = 9;
            int intNum2 = Convert.ToInt32(num2);
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            float num3 = 9.1F;
            int intNum3 = Convert.ToInt32(num3);
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            float num4 = 9.5F;
            int intNum4 = Convert.ToInt32(num4);
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            float num5 = 9.6F;
            int intNum5 = Convert.ToInt32(num5);
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            float num6 = 8.5F;
            int intNum6 = Convert.ToInt32(num6);
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");

执行结果:
在这里插入图片描述

  • double
    代码:
            double num2 = 9;
            int intNum2 = Convert.ToInt32(num2);
            Console.WriteLine($"{num2}被经过转换后值为{intNum2}");
            double num3 = 9.1;
            int intNum3 = Convert.ToInt32(num3);
            Console.WriteLine($"{num3}被经过转换后值为{intNum3}");
            double num4 = 9.5;
            int intNum4 = Convert.ToInt32(num4);
            Console.WriteLine($"{num4}被经过转换后值为{intNum4}");
            double num5 = 9.6;
            int intNum5 = Convert.ToInt32(num5);
            Console.WriteLine($"{num5}被经过转换后值为{intNum5}");
            double num6 = 8.5;
            int intNum6 = Convert.ToInt32(num6);
            Console.WriteLine($"{num6}被经过转换后值为{intNum6}");

执行结果:
在这里插入图片描述

  • string
    代码:
            string num2 = "9";
            int intNum2 = Convert.ToInt32(num2);
            Console.WriteLine($"字符串{num2}被经过转换后值为{intNum2}");
            string num3 = "9.1";
            int intNum3 = Convert.ToInt32(num3);
            Console.WriteLine($"字符串{num3}被经过转换后值为{intNum3}");//执行会报错

执行结果:
在这里插入图片描述
要看仔细了哦,里面有彩蛋哦,仔细观察,9.58.5的转换结果哦
总结:三种转换方式的特点如下

方式 object float double string
(int) 只可以转换整数值 保留整数(不四舍五入 保留整数(不四舍五入
int.Parse() string的值内容必须为整数值,小数会报错
Convert.ToInt32() 如果object为数值,则四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整。如果为字符串,则字符串内容必须为整数值 四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整 四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整 如果字符串内容必须为整数值

猜你喜欢

转载自blog.csdn.net/qq_39541254/article/details/106478747
今日推荐