这是有问题的代码:
static const float SMALL_BINDING_TARGET_SIDE = 10;
static const float SMALL_BINDING_TARGET_HS = 0.25;
static const float SMALL_BINDING_TARGET_HL = 2.6;
static const float SMALL_BINDING_TARGET_VS = 1.33;
static const float SMALL_BINDING_TARGET_VL = 3.54;
问题是我的编译器(将Qt与MVSC 2017结合使用)引发以下警告:
warning: C4305: 'initializing': truncation from 'double' to 'float'
在下面的三行中,但不在上面的两行中。此外,我总共有16个完全像这样的声明(包括上面代码中的5个),只有这三个声明才产生警告。
谁能告诉我区别,我该怎么解决?
通过添加来指定文字是浮点数f
。因此,一行如下所示:
static const float SMALL_BINDING_TARGET_SIDE = 10.f;
如果没有该f,则文字将被解释为双精度,并且如果二进制表示形式的浮点精度更长,则可能会截断它们。
不会发生这种情况,因为高二位可以用二进制表示而无需使用很多位,因此可以不截断地放入浮点数中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句