在论坛中看到有朋友出现这样的疑问。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的一些规则运算掌握还是不牢固。需要经常复习。在代码中发现。这样才能帮助我们巩固记忆。写这篇东西可能比较多余了。本人小菜。为了给同样的小菜交流下写的这篇希望大家多多交流。
----------------------------------------------------------------------------------------------------------文笔不好,欢迎来喷
|
|