摄氏度到华氏度程序不会将双精度编译为浮点数错误
Celsius to Fahrenheit program wont compile double to float error
/*
This program will convert Celsius to Fahrenheit and display a table
of their Fahrenheit equivalents.
*/
// ---------1---------2---------3---------4---------5--------6---------7
// 1234567890123456789012345678901234567890123456789012345678901234567890
public class CelsiusToFarhenheit
{
public static void main(String[] args)
{
//Variables
float fhdeg;
float celdeg = 0;
while (celdeg <= 20)
{
fhdeg = 1.8 * celdeg + 32;
}
if (celdeg <= 20)
{
System.out.printf( " %3d C = %5.1f F\n", celdeg, fhdeg );
celdeg++;
}
}
}
我一直收到这个错误...
CelsiusToFarhenheit.java:22: error: incompatible types: possible lossy
conversion from double to float
fhdeg = 1.8 * celdeg + 32;
^ 1 error
我不明白的是,如果我将它们初始化为浮点数...发生了什么事?
因为我无法让它初始化,所以我不知道我是否有任何其他错误,或者它是否会按照我想要的方式打印出 table。
fhdeg = 1.8 * celdeg + 32;
1.8
是 double
类型的文字。当您将 double
和 float
相乘时,结果将是 double
,这不适合 float
。使用 f
后缀使其成为 float
文字:
fhdeg = 1.8f * celdeg + 32.0f;
1.8
是一个 double
,并使整个表达式 1.8 * celdeg + 32
成为 double
。 Java 拒绝在分配给 fhdeg
.
时将此 double
隐式转换为 float
相反,您可以写成 fhdeg = (float)(1.8 * celdeg + 32);
这使计算保留为 double
,并且仅在将值分配给 fhdeg
时转换为 float
。
简单来说,float(32 位)不能容纳 double(64 位)。选中 java docs,但您可以容纳双精度浮点数。
为了使您的程序正常运行,您需要通过后缀 f 将 1.8 转换为浮点数,即 1.8f 或将您的变量设为双精度。
/*
This program will convert Celsius to Fahrenheit and display a table
of their Fahrenheit equivalents.
*/
// ---------1---------2---------3---------4---------5--------6---------7
// 1234567890123456789012345678901234567890123456789012345678901234567890
public class CelsiusToFarhenheit
{
public static void main(String[] args)
{
//Variables
float fhdeg;
float celdeg = 0;
while (celdeg <= 20)
{
fhdeg = 1.8 * celdeg + 32;
}
if (celdeg <= 20)
{
System.out.printf( " %3d C = %5.1f F\n", celdeg, fhdeg );
celdeg++;
}
}
}
我一直收到这个错误...
CelsiusToFarhenheit.java:22: error: incompatible types: possible lossy conversion from double to float fhdeg = 1.8 * celdeg + 32; ^ 1 error
我不明白的是,如果我将它们初始化为浮点数...发生了什么事? 因为我无法让它初始化,所以我不知道我是否有任何其他错误,或者它是否会按照我想要的方式打印出 table。
fhdeg = 1.8 * celdeg + 32;
1.8
是 double
类型的文字。当您将 double
和 float
相乘时,结果将是 double
,这不适合 float
。使用 f
后缀使其成为 float
文字:
fhdeg = 1.8f * celdeg + 32.0f;
1.8
是一个 double
,并使整个表达式 1.8 * celdeg + 32
成为 double
。 Java 拒绝在分配给 fhdeg
.
double
隐式转换为 float
相反,您可以写成 fhdeg = (float)(1.8 * celdeg + 32);
这使计算保留为 double
,并且仅在将值分配给 fhdeg
时转换为 float
。
简单来说,float(32 位)不能容纳 double(64 位)。选中 java docs,但您可以容纳双精度浮点数。
为了使您的程序正常运行,您需要通过后缀 f 将 1.8 转换为浮点数,即 1.8f 或将您的变量设为双精度。