黑马程序员技术交流社区

标题: 为什么和我想的不一样? [打印本页]

作者: 曾祥旭    时间: 2013-2-11 21:31
标题: 为什么和我想的不一样?
本帖最后由 曾祥旭 于 2013-2-13 07:22 编辑

  今天遇见一个题目:
  int x=10;
  float y=300.3f;
  System.out.println(y/x);
为什么这个结果是:30.029999?不应该是30.3吗?为什么和我想的不一样?很是郁闷!!!
作者: 铿锵科技    时间: 2013-2-11 21:45
int x=10;
                float y=300.3f;
                System.out.println(y/x);//y/x这个结果是double类型的值,转换为float时损失精度造成输出30.029999
                double y1=Double.parseDouble(Float.toString(y));
                Double x1=Double.parseDouble(Integer.toString(x));
                System.out.println(y1/x1);//这个结果输出为double类型,没损失精度正确
作者: 黄玉昆    时间: 2013-2-11 21:52
当用运算符 /  对两个整数操作时,便是整数除法,得到的结果就是保留整数部分,而舍弃小数部分;否则的话,是进行的浮点除法。这是为什么呢?
其实这和基本数据类型的级别有关,byte<short < int(char)<long < float < double。你可多看看有关运算符的运算和基本数据类型间的关系方面的知识。
作者: 曾祥旭    时间: 2013-2-13 07:02
铿锵科技 发表于 2013-2-11 21:45
int x=10;
                float y=300.3f;
                System.out.println(y/x);//y/x这个结果是dou ...

嗯,知道了,谢谢哈
作者: 曾祥旭    时间: 2013-2-13 07:02
黄玉昆 发表于 2013-2-11 21:52
当用运算符 /  对两个整数操作时,便是整数除法,得到的结果就是保留整数部分,而舍弃小数部分;否则的话, ...

好的,看来还有待提高




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2