问题描述
public class Main{
public static void main (String[] args) {
byte b=2;
short s=7;
int i=11002;
char c = 's';
float f = 9.987;
double d = .879;
int res = (f*b) + (i/c) - (d*s);
System.out.println("(f*b) + (i/c) - (d*s)");
System.out.println("result = "+res);
}
}
我得到的错误:
Main.java:7: 错误:不兼容的类型:从双精度到浮点的可能有损转换 浮动 f = 9.987; ^ Main.java:9: 错误:不兼容的类型:从 double 到 int 的可能有损转换 int res = (fb) + (i/c) - (ds); ^ 2 错误
解决方法
我猜你是 Java 初学者。所以你犯的错误是类型转换。您不能为浮点类型分配双精度值。
试试这个代码
public class Main{
public static void main (String[] args) {
byte b=2;
short s=7;
int i=11002;
char c = 's';
float f = 9.987f;
double d = .879;
int res = (int) ((f*b) + (i/c) - (d*s));
System.out.println("(f*b) + (i/c) - (d*s)");
System.out.println("result = "+res);
}
}
如果您以后不想再遇到这个问题,请了解类型转换(自动转换和显式转换)。
,不同数据类型之间的运算结果总是最大的类型(这里是double)。 如果您想将结果保留为 int :查看转换值。
它应该是这样的:int res = (int) ((f*b) + (i/c) - (d*s))
否则,使结果为双倍。
另外,java中的浮动需要在最后有f:float f = 9.987f;