为什么我不能在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浮点值?
1.2
为double
(8字节)。1.2f
是一个float
(4字节)
代码中包含小数点的任何文字数字都被解释为double
,而不是float
,除非您通过附加f
将其标记为float
。
双精度浮点数不会自动转换为浮点数,因为这会导致精度的损失。 要修改代码,可以: 将文本数字标记为浮点数: 或者显式地将其转换为浮点数: 在使用数字字面值时应该首选前一个选项,但如果传递的是双精度类型的变量,则可以使用后一个选项。Program obj1 = new Program(1.2f);
Program obj1 = new Program((float)1.2);