通过 cast 或 Convert.ToSingle() 将 double 转换为 float?

Posted

技术标签:

【中文标题】通过 cast 或 Convert.ToSingle() 将 double 转换为 float?【英文标题】:Convert double to float by cast or Convert.ToSingle()? 【发布时间】:2021-06-21 14:29:43 【问题描述】:

在 C# 中,我可以通过演员 (float)Convert.ToSingle() 将双精度数转换为浮点数。

double x = 3.141592653589793238463;
float a = (float)x;
float b = Convert.ToSingle(x);

ab 相等。

这两种技术有什么不同吗?我应该更喜欢哪一个?为什么?

【问题讨论】:

【参考方案1】:

来自.NET reference source:

public static float ToSingle(double value)

     return (float)value;

所以,你的答案是它们在底层是完全相同的。

两者之间的任何偏好严格来说都是个人风格选择。就我个人而言,我总是会使用演员表,因为它更短,而且对我来说似乎更惯用。

【讨论】:

由于似乎根本没有任何理由使用 ToSingle,所以这不是个人选择,而是客观上更好地使用演员表。 Convert 类旨在成为在 .NET Framework 的不同基类型之间进行转换的与语言无关的方式。并非所有在 .NET 上运行的语言实际上都有像 C# 这样的强制转换运算符。例如:在 VB.NET 中,您有 CType()、CDbl()、DirectCast() 和隐式转换,它们都没有与 C# 中的强制转换运算符完全相同的语义。

以上是关于通过 cast 或 Convert.ToSingle() 将 double 转换为 float?的主要内容,如果未能解决你的问题,请参考以下文章

Python Casting

Python Casting

为啥 static_cast 需要指针或引用?

哪个演员更快 static_cast<int> () 或 int()

SQL 查询中的 CONVERT 或 CAST 字段

通过 void* 进行投射,而不是使用 reinterpret_cast [重复]