将已装箱的浮点数拆箱为整型
本文关键字:整型 浮点数 | 更新日期: 2023-09-27 18:09:40
我正在准备考试,被一个关于装箱/拆箱的问题绊倒了。我一直在想如果我的盒子我们说一个像这样的浮点数:
float x = 4.5f;
object o = x;
如果我想从o
返回一个值类型变量,我必须将其解盒为浮点数。
float y = (float)o;
这会抛出一个异常:
int z = int(o);
如果我想将存储在o
中的值转换为int类型,我必须先将其拆箱,然后像这样进行转换:
int z = (int)(float)o;
现在是我偶然发现的问题:
假设你有这样一个方法:
public static void FloorTemperature(float degrees) {
object degreesRef = degrees;
`xxx`
Console.WriteLine(result);
}
您需要确保应用程序不会对无效转换抛出异常。您应该为xxx
插入哪个代码段(我认为无效转换是无效强制转换异常):
int result = (int)degreesRef;
(b) int result = (int)(float)degreesRef;
正确的解决方案是(a),但对我来说(b)看起来是正确的。所以你能开导我一下吗?我错过了什么?
亲切的问候
你不会错过任何东西
答案应该是(b),因为:
(a)抛出异常,因为你试图将object
转换为int
。
(b)是正确的,因为您首先将其转换为float
,然后将其转换为int
,这将其舍入,但不会抛出异常。