首页 > 试题广场 >

定义如下程序: public static void ma

[单选题]
定义如下程序:
public static void main(String[] args){
    Double x=1.2;  
    long l = 1.2;  
    float f =  x/l;
    System.out.println(f);
}
程序执行结果是? ()
  • 1
  • 1f
  • 运行报错
  • 编译报错
这是java的题,高精度类型得到低精度结果需要进行强转
发表于 2020-12-01 21:59:55 回复(0)
Java基本数据类型转换:byte、short、char—>int—>long—>float—>double
由低精度到到精度可以自动转换,而高精度到低精度会损失精度,故需要强制转换。
故第三行,小数默认为double型(float型需要在数字后面加f),不强转编译出错
第四行,Double到double可以自动拆箱,但向下还是需要强转,再加上 l 的类型错误,故编译出错
第二行,包装类自动装箱,没问题。
发表于 2022-05-18 19:02:28 回复(2)
这题3个点注意 1、Double为包装类,发生了自动装箱 2、long处高精度转低精度应强制转换 3、float处,无法强制转换,应该有个拆箱的过程,即 (float)x.doubleValue()/1; 注意包装类和基本数据类型区别
发表于 2021-12-12 14:41:21 回复(2)
从double 到float会丢失数据,在发生强转的时候
发表于 2021-02-03 15:09:16 回复(0)
参数类型不一致
发表于 2020-08-05 07:18:17 回复(0)
发表于 2022-10-25 12:03:45 回复(0)
            long l = 1.2;  
            float f =  x/l;
都必须强制类型转换,转换后结果为1.2
float f =  (float) (x/l)--------->1.2/1
发表于 2021-12-15 11:17:15 回复(0)
我感觉是double的头文字错了
发表于 2020-10-12 16:02:29 回复(0)
双精度转为单精度 需要强转 丢失精度。
发表于 2022-03-12 19:00:34 回复(0)
  long l = 1.2; //报错
发表于 2022-03-08 17:42:29 回复(0)
Double x=1.2;         //自动装箱成为Double对象
long l =1.2;          //1.2字面量默认为double类型,转为long需要强转。
long x=(long)1.2;
    float f =  x/l;    //x会自动拆箱
发表于 2022-01-27 15:50:48 回复(0)
首先,这tm的是java题,为毛会出到c++。
其次,在c++中这样行虽然会有警告,但是是可以通过编译的,l转换发生丢失变成1,1.2/1=1.2.结果是1.2。
最后,这xx能不出这种题目了吗?md,老是java出到c++来,nm的输出语句都不同。
发表于 2021-07-05 15:00:07 回复(3)
发表于 2022-10-30 09:53:47 回复(0)
高到低要强转
float f = (float) 
发表于 2022-04-04 21:32:35 回复(0)
从double 到float会丢失数据,在发生强转的时候
发表于 2021-06-14 22:46:32 回复(0)
C++表示哭晕在厕所。。。
发表于 2020-09-17 16:14:17 回复(0)
早期的sdk版本(1.4)是支持这种写法的
发表于 2020-08-18 08:48:43 回复(0)


编辑于 2023-05-24 17:33:29 回复(0)
Java表达式转型规则由低到高转换
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
自动类型转换遵循下面的规则:
1.若参与运算的数据类型不同,则先转换成同一类型,然后进行运算。
2.转换按数据长度增加的方向进行,以保证精度不降低。例如int型和long型运算时,先把int量转成long型后再进行运算。
3.所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。补充:long + float = float
4.char型和short型参与运算时,必须先转换成int型。
5.在赋值运算中,赋值号两边的数据类型不同时,需要把右边表达式的类型将转换为左边变量的类型。如果右边表达式的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。
发表于 2022-10-18 14:48:52 回复(2)
C++是可以这样写的。
发表于 2021-01-05 14:33:06 回复(0)