C ++警告:在一个声明中初始化从double到float的截断,但在另一个声明中不初始化

阿雷洛维奇

这是有问题的代码:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C中声明并初始化一个新的char数组后,将更改varible

如何在 C++ 中声明一个零初始化的类成员?

如何从C中的另一个文件初始化文件中的全局值?

C ++:使用另一个类中的参数初始化对象数组

在 C++ 类中初始化另一个类

如何在不指定大小的情况下声明数组,而在C ++中的类内声明一个初始化器?

在C中初始化一个联合

在C ++中初始化一个指针

用另一个初始化一个 c++ 数组

我如何先在C中声明一个全局数组,然后再初始化它的大小?

如何声明一个全局 const 变量并用 C 中的函数对其进行初始化?

如何初始化另一个C#类中的类中的列表以填充列表

C ++如何声明一个临时的未命名,未初始化的数组?

另一个类的c ++私有对象:初始化并使用它调用该类中的函数

C:在另一个函数中初始化动态类型的2D矩阵

是否可以从结构继承而无需在C中拥有另一个初始化的结构

C#| 使用另一个实例的属性初始化新对象的语法

C ++默认参数可以用另一个参数初始化吗?

C ++用另一个向量初始化向量

C# 如何在另一个类 obj 中初始化一个类 obj 的数组?

从另一个对象初始化一个对象,它们共享一个公共接口 c#

如何在C#中初始化一个空数组?

在C中初始化一个可变大小的布尔数组

在C ++中初始化一个二维数组

我如何在C中初始化一个二维数组

c ++模板:从特定整数(作为类型)中初始化一个变量

用C ++中的数组初始化一个类

在Swift中隐藏一个Objective-C初始化程序(或方法)

在C中初始化一个16mb数组