Moh*_*jan 7 c# floating-point double casting
为什么我不能在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();
}
}
Run Code Online (Sandbox Code Playgroud)
它给错误无法转移双倍浮动.为什么不是1.2浮动值?
代码中包含小数点的任何文字数字都被解释为a double,而不是a float,除非您将其标记为float附加f.
双打不会自动转换为浮点数,因为这会导致精度损失.
要修复代码,您可以:
将您的文字编号标记为浮点数:
Program obj1 = new Program(1.2f);
或者,显式地将其转换为浮点数:
Program obj1 = new Program((float)1.2);
使用数字文字时,应优先使用前一个选项,但如果要传递一个类型为double的变量,则可以使用后者.