首页 > 试题广场 >

设int x=1,float y=2,则表达式xy的值是:

[单选题]
设int x=1,float y=2,则表达式x/y的值是:()
  • 0
  • 1
  • 2
  • 以上都不是
本题的意义在于两点,明白这两点之后题会不会本身就不重要了:①float x = 1;与float x = 1.0f,这两种对于float类型的变量来说定义的方式都是正确的,也是比较常见的笔试题里面考察类型转换的例子,当第一种情况时,是将低精度int向上转型到float,是由于java的特性导致而不需要进行强制转换,而第二种情况则是比较正式的对于float变量的定义,由于这种类型本身在工作项目中并不常见,常用的带小数的数字我们一般都直接使用double类型,而double类型直接定义是没有问题的:double x = 1.0。而由于float的精度没有double类型高,因此必须对其进行显示的格式书写,如果没有这个f,就默认是double类型了。当然double x = 1.0d也是正确的命名,不信你可以尝试,虽然这是一个令人窒息的操作。②当多个精度的数字同时进行运算时,最终结果以最高精度为准。在多数情况下,整数和小数的各级混合运算中,一般结果都是double类型的。但就本题而言,结果是float类型的,因为x,y两个数字精度最高的就是float,所以最终结果是0.5,并且这个0.5是float类型的。为什么说不是double类型呢,当然如果你这样处理:double m = x/y,当然m是double类型的,也不会报错,而如果你写成int m = x/y,编译器报错提示的时候就会让你转换成float或者进行强制转换成int,他是不会提示你转换成double的,尽管这么写并没有报错,原因就是①
中所说的向上强转。float转换成double不需要任何提示。
发表于 2018-04-11 19:29:21 回复(14)
不同类型运算时以高精度的为准。
发表于 2018-08-13 20:08:50 回复(6)
正解:0.5
x/y= (float)1.0/(float)2.0=0.5 (float类型的)
发表于 2017-05-04 15:07:51 回复(12)
不同基本数据类型转化与运算byte-short-int-long-float-double,float=1转化为float=1.0,int/float相比先转化为同一类型即float(1.0)/float(2.0)=0.5
发表于 2017-05-21 17:25:18 回复(5)

mark
浮点数的定义:

float x = 2;
float xx = 2f;

float x1 = 2.0;  // Error
float x2 = 2.0F; // 定义浮点数不能省略 f(或F)

Float x3 = 2; // Error
Float x4 = 2f; // 一定要加 f 或 F

Float x5 = 2.0; // Error
Float x6 = 2.0f; // 一定要加 f 或 F

float

  • 使用包装类型声明一定要加F(f),
  • 使用基本数据类型声明,定义整数可以不加F(f),浮点数一定要加
发表于 2019-01-05 17:46:27 回复(0)
发表于 2018-01-04 11:41:28 回复(1)
我在想为什么在float y=2后面没有加一个f,现在想通了,可以由低精度向高精度转换,开始是int,现在转为了float所有是可以的,最后结果如何0.5。去过改成了y=2.0则会出现错误
发表于 2017-08-14 10:37:18 回复(4)
自动向上转型(低到高)。
另外需要注意的是,声明一个 float 数据时,最好是在数据末尾加上后缀“f”,例如:“0.5f”,因为在默认情况下,小数会被默认为 double 类型,强行写会编译错误:
float f = 0.5; // Type mismatch: cannot convert from double to float

发表于 2018-02-24 12:10:53 回复(0)
答案应该是0.5,最终结果是float类型
发表于 2022-04-15 11:14:41 回复(0)
自动向上转型(低到高):float x=1默认转换成float=1f(int比float低),不同类型运算时以高精度的为准,顺序表:byte-short-int-long-float-double(最高)。
发表于 2018-08-18 18:33:07 回复(0)
如果有一个操作数是double类型,另一个操作数将会转换成double类型;如果有一个操作数是float类型,另一个操作数将会转换成float类型;如果有一个操作数是long类型,另一个操作数将会转换成long类型,否则两个数都将换成int类型。-------(Java核心技术1的P41页)
发表于 2018-06-22 19:25:12 回复(0)
为什么我eclipse跑出来是0。。🙃
发表于 2017-10-09 01:10:59 回复(2)
不同类型运算,结果以高精度为准
发表于 2021-11-27 18:04:28 回复(0)
int i=1;
转double 变成 1.00000000
但是 将double j=1.23456;
转 int 会丢失小数点后精度,
所以只能少的转多的
发表于 2018-08-04 21:42:38 回复(0)
小数类型默认为double,int/double=double,所以该题结果应为0.5
发表于 2017-05-04 20:27:02 回复(2)
Java数据类型转换从高精度到低精度排序: double-float-long-int-short-byte。这里int属于低精度,向高精度float转型,所以x/y就是1.0/2.0=0.5了。
发表于 2022-09-06 09:20:06 回复(0)
发表于 2022-08-27 09:13:51 回复(0)
%要求都为int,/看谁的高
发表于 2022-03-27 17:39:19 回复(0)
不是说取整吗,即使类型的问题,那也不该是评论里的0.5啊?这不就是小数了,哪里还是取整?走,用工具运行一下瞅瞅
发表于 2020-04-07 15:03:14 回复(0)
#include<stdio.h>
int main(int argc, char const *argv[])
{
    int x = 1;
    float y = 2;
    printf("x/y = %d",x/y);
    return 0;
}

为什么?

编辑于 2024-03-13 17:27:47 回复(0)