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}");

Android int 转 float取小数点后几位 float int转换_取整


object的值为一个小数

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

无语法错误,但执行报错

Android int 转 float取小数点后几位 float int转换_取整_02


object的值为一个字符串

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

与,小数一样,编译不报错,但是运行报错。

Android int 转 float取小数点后几位 float int转换_Parse_03

  • 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}");

执行效果:

Android int 转 float取小数点后几位 float int转换_取整_04

  • 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----语法错误——编写即报错

    方式二: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等非整形的数值的字符串进行转换的时候会报错,

Android int 转 float取小数点后几位 float int转换_取整_05


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}");//这转换会出错

执行结果:

Android int 转 float取小数点后几位 float int转换_取整_06

  • 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}");

执行结果:

Android int 转 float取小数点后几位 float int转换_Parse_07

  • 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}");

执行结果:

Android int 转 float取小数点后几位 float int转换_c#_08

  • 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}");//执行会报错

执行结果:

Android int 转 float取小数点后几位 float int转换_取整_09


要看仔细了哦,里面有彩蛋哦,仔细观察,9.58.5的转换结果哦

总结:三种转换方式的特点如下

方式

object

float

double

string

(int)

只可以转换整数值

保留整数(不四舍五入

保留整数(不四舍五入

int.Parse()

string的值内容必须为整数值,小数会报错

Convert.ToInt32()

如果object为数值,则四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整。如果为字符串,则字符串内容必须为整数值

四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整

四舍五入且如果第一位小数为5,整数位为奇数向上取整,如果为偶数向下取整

如果字符串内容必须为整数值