【发布时间】:2016-09-26 14:13:09
【问题描述】:
在不同数字类型之间进行转换的最佳做法是什么? float、double、int 类型是我在 C++ 中使用最多的类型。
f 是 float 和 n 是 double 或 int 的选项示例:
float f = static_cast<float>(n);
float f = float(n);
float f = (float)n;
我通常写static_cast<T>(...),但想知道如果有首选方式,C++ 开发社区内是否有任何共识。
我很欣赏这最终可能是一个基于意见的问题,并且可能没有“标准”方式,在这种情况下,请告诉我没有标准方式,所以至少我知道 :-)
我知道这个问题有cropped up 与一般转换有关,但是,我特别感兴趣的是数字以及数字类型的方法中是否有特定的最佳实践。
【问题讨论】:
-
使用
static_cast,“标准”C++ 方式,与 C++11 相比没有任何改变。 -
最好的做法是编写一个不需要任何强制转换的程序
-
这在 C++11 中没有改变;与该标准的早期版本相同的规则适用。有关详细信息,请参阅链接的重复问题,以及 this one。
-
@Cody Gray,我的问题是针对 numbers 的,我相信其他人可能有兴趣了解一般情况是否适用。我并不是真的要暗示我在推测 C++ 11 是否与早期版本不同。
-
@Drop,仅当您从头开始编写代码并且第三方库之间没有类型差异并且您没有使用 double 来获得准确性然后浮动进行矢量化以及许多其他原因时才有效为什么数字之间的转换在科学计算中非常典型。
标签: c++ casting numeric-conversion