"2.00"和"2.00f"之间是否存在功能差异?

Noi*_*Sek 3 c++ floating-point box2d

我问,因为我使用的是Box2D库,它主要调用float参数.虽然我看到很多使用0.00f格式的示例代码,但 我不太确定它与普通旧0.00之间是否存在实际差异.我会被通过不附加额外以后伤害自己˚F?这是速度的事吗?当其他人不愿意时,是否存在需要f加数的某种含义?

TL;博士?我为什么要使用0.00f而不是0.00?

Cod*_*aos 7

所述f后缀使其成为一个单精度(浮点)文字,而不是一个双精度文字.这通常意味着32位而不是64位浮点数.

浮点常量默认为double类型.通过使用后缀f或l(或F或L - 后缀不区分大小写),可以将常量分别指定为float或long double.

http://msdn.microsoft.com/en-us/library/tfh6f0w2(v=VS.100).aspx

  • 也许"文字"比"常数"更合适.*literal*的类型是有问题的. (6认同)
  • `float`的大小不一定是'32位'.它是实现定义的. (2认同)
  • 存储的位数和类型的精度取决于实现.32位和64位存储是常见的但不是通用的. (2认同)

CB *_*ley 5

它们是有区别的.2.00有类型double2.00f类型float.精确的精确度和格式含义取决于您的平台.使用一个在另一个上是否会对代码产生实际影响取决于使用它的上下文.

作为明确类型变量(基本数字类型)的初始化器,没有区别,但是当在函数调用中使用时,它可能会影响使用哪个重载或模板特化.

显然,当使用auto 类型说明符或作为decltype-specifier中的表达式在声明中用作初始值设定项时,声明的对象的类型将受到影响.

decltype(2.00) x = 2.00f; // confusing
decltype(2.00f) y = 2.00; // also confusing

auto d = 2.00;
auto f = 2.00f;
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1473 次

最近记录:

13 年,11 月 前