visualstudio2012中的float和double类型

float and double types in visual studio 2012

本文关键字:double 类型 float 中的 visualstudio2012      更新时间:2023-10-16

我正在学习第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.832.0)默认为double类型。将double乘以float得到double,因此1.8*cs+32.0的结果属于double类型。如果您想要float s,则必须执行1.8f32.0f

在这一行:f=1.8*cs+32.0;中,您使用的是浮点常量,默认类型为double。您需要使用浮动后缀f来指定它的float:f = 1.8f * cs + 32.0f;

请参阅C++浮点常量