Skip to content
On this page

类型转换

上一节我们学习了 4 种数据类型,也提到每种类型的变量只能存这种类型的数据。可是,有时候真的需要把不同类型的值放在一起运算,比如这种:3.5+8 这时候怎么办呢?有下面 2 种情况:

自动类型转换:2 种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。 以 3.5+8 为例,显然数字 8 的精度较低(int),而 3.5 的精度较高(double),所以,8 会自动转换为 double 型,即转换为 3.5+8.0 进行运算,结果为 11.5。

  • double d = 2; 2 的精度显然低于变量 d 的精度,所以 2 会自动转换为 2.0 然后赋值给 d。
  • int i = 3.0;变量 i 的精度低于 3.0,但是由于 i 已经声明为 int 型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。

强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:

csharp
int i = (int)3.0;

数字前面的(int)表示转换的目标类型为 int,3.0 会被强制转换为 3。

注意

double 型强制转换为 int 型将失去小数部分,比如 int num = (int)2.8,我们得到的将是 num = 2

csharp
using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        { 
            double d = 2.5;
            int x = (int)d + 1;
            Console.WriteLine(x);
        }
    }
}