为什么我不能在c#中为浮动变量赋1.2值?我在C和c++中也做了同样的事情,并且成功了

本文关键字:c++ 成功 我在 不能 变量 为什么 | 更新日期: 2023-09-27 18:02:23

为什么我不能在c#中为浮动变量分配1.2值?我在C和c++中也做了同样的操作,并且成功了。

class Program
{
    private readonly int a = 20;
    private readonly float b;      
    public Program(float tmp)
    {
        b = tmp;
    }
    static void Main(string[] args)
    {
        Program obj1 = new Program(1.2);
        Console.Read();
    }
}

给出不能将double转换为float的错误。为什么不是1.2浮点值?

为什么我不能在c#中为浮动变量赋1.2值?我在C和c++中也做了同样的事情,并且成功了

1.2double(8字节)。
1.2f是一个float(4字节)

详细

代码中包含小数点的任何文字数字都被解释为double,而不是float,除非您通过附加f将其标记为float

双精度浮点数不会自动转换为浮点数,因为这会导致精度的损失。

要修改代码,可以:

  • 将文本数字标记为浮点数:

    Program obj1 = new Program(1.2f);

  • 或者显式地将其转换为浮点数:

    Program obj1 = new Program((float)1.2);

在使用数字字面值时应该首选前一个选项,但如果传递的是双精度类型的变量,则可以使用后一个选项。