我在我正在处理的一些代码中看到了这一点:
num1 = (float)double.Parse(parameters[i + 1]);
num2 = (float)double.Parse(parameters[i + 2]);
想知道为什么他们不只是使用float.Parse
而不是double.Parse
并转换为float
. 有充分的理由吗?
我在我正在处理的一些代码中看到了这一点:
num1 = (float)double.Parse(parameters[i + 1]);
num2 = (float)double.Parse(parameters[i + 2]);
想知道为什么他们不只是使用float.Parse
而不是double.Parse
并转换为float
. 有充分的理由吗?
有充分的理由吗?
是的。如果参数很大,上面的代码会引发OverflowException
,但代码只需要最大值为 float max 的值。
如果您尝试这段代码,您会看到,例如,如果数字太大而无法使用 float 表示,则会引发异常,但当从 double 转换为 float 时不会出现任何异常。这个数字将是无穷大。自己试试:
string numString = "23339823498723948723958734956283468237468273468274602983409283.4092834092834029834029384029834";
double num2 = double.Parse(numString);
float num3 = (float)num2;
float num1 = float.Parse(numString);
也许有人一开始就预料到了这种行为。即使,我会使用 try catch 而不是这种方法。