在C#中,我可以通过强制转换(float)或Convert.ToSingle()将双精度数转换为浮点数。
(float)
Convert.ToSingle()
double x = 3.141592653589793238463; float a = (float)x; float b = Convert.ToSingle(x);
a和b变得相等。这两种方法有什么不同吗?我应该选择哪一种,为什么?
a
b
umuewwlo1#
从.NET参考源:
public static float ToSingle(double value) { return (float)value; }
所以,你的答案是,他们是完全一样的,在引擎盖下。两者之间的任何偏好都是严格的个人风格选择。就我个人而言,我总是使用演员阵容,因为它更短,而且对我来说似乎更习惯。
kupeojn62#
虽然它们在强制转换double时完全相同,但如果将double强制转换为object,则会有差异。
double
object
object x = 1.0; float a = (float)x; //InvalidCastException float b = Convert.ToSingle(x); //OK
关于如何完成它的.NET参考源代码在@Glorin提供的答案上面几行。
a9wyjsp73#
根据C#的版本,Convert方法测试值 在转换前为空,如果是,则返回0表示基元数。对于显式转换中的相同情况,将引发异常。使用Convert方法的替代方法是使用??运算符
float floatValue = nullableFloat ?? 0.0f;
3条答案
按热度按时间umuewwlo1#
从.NET参考源:
所以,你的答案是,他们是完全一样的,在引擎盖下。
两者之间的任何偏好都是严格的个人风格选择。就我个人而言,我总是使用演员阵容,因为它更短,而且对我来说似乎更习惯。
kupeojn62#
虽然它们在强制转换
double
时完全相同,但如果将double强制转换为object
,则会有差异。关于如何完成它的.NET参考源代码在@Glorin提供的答案上面几行。
a9wyjsp73#
根据C#的版本,Convert方法测试值 在转换前为空,如果是,则返回0表示基元数。对于显式转换中的相同情况,将引发异常。
使用Convert方法的替代方法是使用??运算符