visualstudio2012中的float和double类型
float and double types in visual studio 2012
我正在学习第11标准中的C++。我对C++不太了解
在我的大学里,有一个视觉工作室2005。我有一个将celsius转换为farenheit的项目。这段代码在我的大学visual studio 2005:中运行良好
#include <iostream>
int main()
{
float f,cs;
cin>>cs;
cout<<"n celsius = "<<cs;
f=1.8*cs+32.0;
cout<<"f = "<<f;
}
但当我在visual studio 2012中运行此代码时,修改后:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
float f,cs;
cin>>cs;
cout<<"n cs = "<<cs;
f=1.8*cs+32.0;
cout<<"f = "<<f;
}
它给了我以下错误:
从双重转换为浮动可能的
将1.8(double
文字)与cs
相乘,得到double
时,将收到警告。在C++中,如果您有一个具有两种不同类型的表达式,则执行类型提升到具有最大值范围的类型;对于CCD_ 4和CCD_ 5,这意味着CCD_。然后将其分配给float
,该CCD_8可能无法表示double
的全部值范围(float
是32位IEEE浮点数,double
是64位。)因此发出警告。
你可以通过写:来解决这个问题
f=1.8f*cs+32.0f;
或者通过将CCD_ 12改变为CCD_。
注意:您的代码正在编译,这只是一个警告,而不是错误。
这不是错误,而是警告。您的代码仍然可以编译。它警告您,您有一些类型为double
的值,您正试图将其压缩为float
。出现这种情况的原因是浮点文字(如1.8
和32.0
)默认为double
类型。将double
乘以float
得到double
,因此1.8*cs+32.0
的结果属于double
类型。如果您想要float
s,则必须执行1.8f
和32.0f
。
在这一行:f=1.8*cs+32.0;
中,您使用的是浮点常量,默认类型为double
。您需要使用浮动后缀f
来指定它的float
:f = 1.8f * cs + 32.0f;
请参阅C++浮点常量
相关文章:
- 在c++中为double类型的数组创建一个unique_ptr
- C++:无法使用条件类型在模板函数中使用 'double' 类型的 lvalue 初始化 'char*' 类型的参数
- 格式“%lf”期望“ double *”类型的论点,但参数2具有“ poly term **”类型
- 错误:无法将 "double*" 类型的值分配给类型 "double" 的实体
- 使用Float或Double类型时不显示小数
- 'double' 和 'double' 类型的无效操作数
- 为什么用“std::chrono”进行时差测量时,与“double”类型相比,用“float”类型给出的有效数字更多
- 在当前的C++和Java中,double类型和float类型:if(x==0.0)是正确的
- double类型的c++变量总是将其值更改为-9,25596e+061
- 将一个short类型数组转换为double类型数组
- 最快的复制double类型的方法
- 将Vec*类型强制转换为double*类型
- c++验证String中的Double类型
- 将数据从const void *data转换为double类型
- 具有double类型的变量参数的函数的奇怪输出
- C++错误:无效的 'double' 类型的操作数和二进制"运算符"<未解析的重载函数类型"
- 在c#中使用非托管c++代码对所有double类型返回0
- 如何正确地在c++中打印double类型的cout
- 将double类型强制转换为int:它是如何工作的
- 错误:将' double* '和' double '类型的操作数转换为二进制' operator/ '无效