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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zq19910303 于 2015-5-27 10:00 编辑

理论上单精度有7位有效数数字。双精度有16位有效数字,为什么下面代码的结果是0.0   0.0

  1. class Xiaoshu
  2. {
  3.         
  4.         public static void main(String[] args)
  5.         {  

  6.                 float f=1/3;
  7.                 double d=1/3;
  8.                 System.out.println(f);
  9.                 System.out.println(d);
  10.         }
  11. }
复制代码



6 个回复

倒序浏览
如果你想获得float或者double不是这么写的、、需要些(float)1/3。double同理
回复 使用道具 举报
如果你想获得一个float和double需要这两个数其中一个是那个类型的。否则默认是int计算。之后在赋值给一个浮点变量。这样在左面计算的时候就是0在赋值给浮点型就是0.0。可以向我上面那个帖子这么写或者把1或者3加后面加上f类型。double类型的在后面把1或者3写成1.0或者3.0的小数形式
回复 使用道具 举报
需要一个是float或double类型,否则俩个数都先按int计算,int转成它们就只有一位了
回复 使用道具 举报
有效数字的概念:从第一个非零的数字算起的所有数字。都是0,体现不了有效数字的位数,所以都显示0.0。
回复 使用道具 举报
好深奥啊
回复 使用道具 举报
编码的时候记住强转和声明才可以。要不然java本身有自动默认类型的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马