这段代码运行正常
float ff = 5.5f;
int fd = (int) ff;
Console.Write(fd);
Run Code Online (Sandbox Code Playgroud)
这个代码不在哪里
float ff = 5.5f;
object jf = ff;
int fd = (int) jf;
Console.Write(fd);
Run Code Online (Sandbox Code Playgroud)
跑步者的规则是什么导致这种情况发生?
Mar*_*ers 14
您可以将浮点数强制转换为int,但不能将盒装浮点数转换为int - 您必须先将其取消装箱.
int fd = (int)(float)jf;
Run Code Online (Sandbox Code Playgroud)
阅读Eric Lippert的帖子陈述和身份以获取更多详细信息.
float ff = 5.5f;
object jf = ff;
int fd = (int) jf;
Run Code Online (Sandbox Code Playgroud)
在这里,当你从浮到对象,实际类型的JF是浮动框,你是一个拆箱装箱的浮动直接为int未运行时所接受.
所以你需要首先将unboxed浮动然后再次转换为int.