int float double 忽略的细节

来源:互联网 发布:java的运行环境 编辑:程序博客网 时间:2024/05/01 22:53

突然  发现int float double这些基本类型的一些细节  我竟然没注意到

  惯性思维:1/3=0.33333334  

其实1/3=0   应为  1,3都默认是int    /:取整

1f/3=0.33333334

1.0/3=0.3333333333333333     1.0默认double        3为int    结果为double

1.0f/3.0=0.3333333333333333      float/double=double

四则运算 的结果  类型  是  参与运算类型的 最大类型  

  浮点数的比较  与C++不同   可以用==直接比较   也可以用  封装类的compare方法  例如Float.compare(f1,f2)  

   Double.compare(d1,d2);


   System.out.printf("%.2f",浮点数);  四舍五入的取两位小数



  Java浮点数的精度问题:

1.01f+3.0=?  4.01  错了

其实 1.01f+3.0=4.009999990463257      而1.01+3.0=4.01(1.01f+3.0f=4.01f)

      当一个 float 与  一个double  类型 且不是整数形式  进行四则运算是   就会出现  类似问题

要从  计算机组成原理  讲起      

未完待续.......


  

0 0
原创粉丝点击