java:简单类型转换
我已经在windows上的eclipse上编写了我的第一个java程序。我最近开始在linux上编程java 当我尝试在Linux上编译上面的程序时,它确实工作得很好,但是当我尝试在windows上编译时,我得到了以下错误java:简单类型转换,java,windows,eclipse,Java,Windows,Eclipse,我已经在windows上的eclipse上编写了我的第一个java程序。我最近开始在linux上编程java 当我尝试在Linux上编译上面的程序时,它确实工作得很好,但是当我尝试在windows上编译时,我得到了以下错误 Exception in thread "main" java.lang.Error: Unresolved compilation problems: Type mismatch: cannot convert from int to short Type
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Type mismatch: cannot convert from int to short
Type mismatch: cannot convert from double to float
public class TypeDemo {
public static void main (String args[])
{
byte b = 8;
long a = 1000011334;
int c = 76;
short s = 99789;
float f = 99.99;
double d = 99979.9879;
boolean bool = true;
char ch = 'y';
System.out.println ("b = "+b);
System.out.println ("a = "+a);
System.out.println ("c = "+c);
System.out.println ("s = "+s);
System.out.println ("f = "+f);
System.out.println ("d = "+d);
System.out.println ("bool = "+bool);
System.out.println ("ch = "+ch);
}
}
这很容易。您需要执行类型转换:
float f = 99.99f;
或
您正试图将一个“大”数存储到一个短变量中。short只能存储-32.768到32.767之间的值。这很简单。您需要执行类型转换:
float f = 99.99f;
或
您正试图将一个“大”数存储到一个短变量中。short只能存储-32.768到32.767之间的值。使用此代码
在代码中,您试图将较大的数据类型分配给较小的数据类型,这将导致精度损失,这是不允许的,因此需要显式类型转换
短s=(短)99789;对于浮动,您有两种操作
浮球f=99.99f
或
浮动f=(浮动)99.99;(因为默认情况下十进制值是双精度的)
请记住,仅允许那些不会导致精度损失的转换使用此代码
`float f = 99.99;` //need to include f at last or need to type cast;
在代码中,您试图将较大的数据类型分配给较小的数据类型,这将导致精度损失,这是不允许的,因此需要显式类型转换
短s=(短)99789;对于浮动,您有两种操作
浮球f=99.99f
或
浮动f=(浮动)99.99;(因为默认情况下十进制值是双精度的)
请记住,只允许那些不会导致精度损失的转换
`float f = 99.99;` //need to include f at last or need to type cast;
需要
float f = 99.99f;
or
float f = (float)99.99;
short s = 99789; //exceeded the limit
限制应该是
short:short数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省非常重要的情况下,可以使用short来在大型阵列中节省内存
有关java数据类型的更多信息,请参见此处
需要
float f = 99.99f;
or
float f = (float)99.99;
short s = 99789; //exceeded the limit
限制应该是
short:short数据类型是一个16位有符号2的补码整数。它的最小值为-32768,最大值为32767(含)。与byte一样,同样的准则也适用:在内存节省非常重要的情况下,可以使用short来在大型阵列中节省内存
有关java数据类型的更多信息,请参见此处
当我尝试在Linux上编译上面的程序时,它确实工作得很好
事实上,这很令人惊讶,我买不起。再检查一遍,不应该
short
是一个16位有符号2的补码整数。它的最大值是32767
,您正在为它赋值99789
。绝对超出范围。您需要显式地将其键入short
:
short s = (short)99789;
short s1 = 100; // this would however work
虽然你会看到奇怪的输出。多余的位将被截断。最好直接使用int
现在,在float
的情况下,默认情况下,浮点文本为double
。要获得float
,需要在末尾附加F
或F
。因此,将其更改为:
float f = 99.99f;
当我尝试在Linux上编译上面的程序时,它确实工作得很好
事实上,这很令人惊讶,我买不起。再检查一遍,不应该
short
是一个16位有符号2的补码整数。它的最大值是32767
,您正在为它赋值99789
。绝对超出范围。您需要显式地将其键入short
:
short s = (short)99789;
short s1 = 100; // this would however work
虽然你会看到奇怪的输出。多余的位将被截断。最好直接使用int
现在,在float
的情况下,默认情况下,浮点文本为double
。要获得float
,需要在末尾附加F
或F
。因此,将其更改为:
float f = 99.99f;
short
是一个16位整数(0-65535无符号;−32768-32767签名)。您的s值太大,因此将改为int
默认情况下,Java将
99.99
视为双精度。只需将f
附加到该(float f=99.99f
)的末尾即可解决该问题。Ashort
是一个16位整数(0-65535无符号;−32768-32767签名)。您的s值太大,因此将改为int
short s = 99789;
默认情况下,Java将99.99
视为双精度。只需将f
附加到该(float f=99.99f
)的末尾即可解决该问题
short s = 99789;
short是一个16位的值,而int是32位的.99789,或者任何数字在java中都是预定义的int。因此,在缩小数据类型范围时,必须手动强制转换
short s = (short) 99789;
short是一个16位的值,而int是32位的.99789,或者任何数字在java中都是预定义的int。因此,在缩小数据类型范围时,必须手动强制转换
short s = (short) 99789;
错误在于:
short s = 99789;
“short”数据类型的最大值为32767
99789>32767,这将导致精度损失
相反,请尝试:
int s = 99789;
同样地:
float f = 99.99;
应为双精度:
double f = 99.99;
希望有帮助 错误在于:
short s = 99789;
“short”数据类型的最大值为32767
99789>32767,这将导致精度损失
相反,请尝试:
int s = 99789;
同样地:
float f = 99.99;
应为双精度:
double f = 99.99;
希望有帮助 如果说有什么区别的话,那么这段代码在Linux上编译是非常奇怪的。你在用什么编译器?它真的是完全相同的代码吗?如果说有什么不同的话,那么这段代码在Linux上编译是非常奇怪的。你在用什么编译器?它真的是完全相同的代码吗?当我尝试
short s=99789代码>,我得到一个错误“可能丢失精度”,但short s=9789代码>编译良好。我也在使用Windows,我想