A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在论坛中看到有朋友出现这样的疑问。float a = 1/3;
double b = 1/3;
得出float 和 double类型的结果。但是运行之后却发现结果是0.0。想必也有同学遇到过这样的问题。
其实这问题很好理解。是我们在对java运算赋值的概念掌握不牢。
在上面的运算中。1和3默认是int类型。1/3结果是0.这样你在赋值给float或者double类型的b相当于把得出的结果进行类型的提升。
结果必然是0.0
如果你想得出结果保留后面的小数该怎么办呢。
可以两种写法。(其实都是一个意思)
第一种
float a = (float)1/3;
double b = (double) 1/3;
第二种
float a = 1f/3;
double b = 1.0/3;
说明。第一种写法比较麻烦。其实个人感觉也没这个必要。就是相当于把1强制转换成float和double类型在进行运算,这样后面int类型的3会自动类型提升。(这种方法感觉有点画蛇添足的感觉了)
第二种就是正常思维了。我们在学习java时候知道的float类型必须要在后面加上f来指定他否则小数默认为double类型。这样。在第二种写法中两个1分别是float和double类型。结果当然也就是对应的类型。所以结果就是你想要的了。。
最后总结:  开始学习时我们对java的一些规则运算掌握还是不牢固。需要经常复习。在代码中发现。这样才能帮助我们巩固记忆。写这篇东西可能比较多余了。本人小菜。为了给同样的小菜交流下写的这篇希望大家多多交流。
----------------------------------------------------------------------------------------------------------文笔不好,欢迎来喷

4 个回复

倒序浏览
好吧。。是太简单了都没人看么。。。:L
回复 使用道具 举报
谢谢,是很有用的知识
回复 使用道具 举报
好像是 只要有一个是浮点类型就好了吧  如果小数点后面结果是0  那么定义两个变量 一个整数类型 一个浮点类型 然后输出浮点类型的值 我上次这样弄过一次
回复 使用道具 举报
小峰Raul 发表于 2015-5-24 15:42
好像是 只要有一个是浮点类型就好了吧  如果小数点后面结果是0  那么定义两个变量 一个整数类型 一个浮点类 ...

两个数只要一个是就可以。小数点后面是0比如1.0/3这样结果应该是double类型的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马