0.5f==0.5 0.3f==0.3 0.5f==0.5 结果:false0.3f==0.3 结果:false0.3再没指定精度时,默认是双精度(d),而f是单精度,两者是不同的类型,所以不等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 0.5f==0.5 应该是ture吧?比较是二进制吧? 两个都是false哈,这里唯一的隐藏问题是,默认情况下 小数点在java中是 double 的,就像默认的 整数是int 类型,不是short 或者byte等。所以,要让JVM能识别我们制定的类型,就要进行强制类型转换。就像 如:方式一:float f = 0.3f (0.3F)或者方式二:float f = (float)0.3 并不是类型不同的问题而是有些小数无法用float或double精确表示的问题比如0.x是一个无法用二进制精确表示的数那么,float a = 0.x实际保存的可能是0.x.......10983,也就是说后面还有数字double的话同是如此,但double的位数更多所以,这样用==来比较肯定不相等一般程序中,是很少用float,double直接==比较的,如果不可避免这两种类型的比较,一般采用减法来做,如if(a-b<0.000001) {//就表示两者相等,精度自己控制} 10楼正解。与类型无关,而是真正的2进制表示。 System.out.println(0.5f == 0.5); System.out.println(0.3f == 0.3); System.out.println(0.25f == 0.25); System.out.println(5f == 5);结果是 true false true true------------------------------------------------------------------------------------ 回复一帖,10分到手。菜鸟路过,学习快乐。 installanywhere 怎么添加库 自定义JList渲染器后怎么触发事件? 推荐基本初学者看的JAVA书 一个非常简单的hql怎么写,谢谢请帮忙~(100分求答案) 关于二叉树的问题,郁闷 J2SDK 和 TOMCAT 都配置好了。但是JSP无法调试运行。 窗体在屏幕中的位置怎么定位阿 下面语句将输出什么 求过程 简单问题 100分 jdbc的简单问题,送分啦 折腾一天了,指导一下 求教java中的drawString()方法
就像默认的 整数是int 类型,不是short 或者byte等。
所以,要让JVM能识别我们制定的类型,就要进行强制类型转换。就像
如:
方式一:float f = 0.3f (0.3F)
或者
方式二:float f = (float)0.3
double的话同是如此,但double的位数更多所以,这样用==来比较肯定不相等一般程序中,是很少用float,double直接==比较的,如果不可避免这两种类型的比较,一般采用减法来做,如
if(a-b<0.000001) {
//就表示两者相等,精度自己控制
}
与类型无关,而是真正的2进制表示。
System.out.println(0.5f == 0.5);
System.out.println(0.3f == 0.3);
System.out.println(0.25f == 0.25);
System.out.println(5f == 5);
结果是 true false true true
------------------------------------------------------------------------------------
回复一帖,10分到手。菜鸟路过,学习快乐。