Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:简单类型转换_Java_Windows_Eclipse - Fatal编程技术网

java:简单类型转换

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

我已经在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 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
)的末尾即可解决该问题。

A
short
是一个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,我想