黑马程序员技术交流社区

标题: 关于单精度与双精度的有效数字的问题 [打印本页]

作者: zq19910303    时间: 2015-5-24 14:38
标题: 关于单精度与双精度的有效数字的问题
本帖最后由 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. }
复制代码




作者: luxinyu    时间: 2015-5-24 15:05
如果你想获得float或者double不是这么写的、、需要些(float)1/3。double同理
作者: luxinyu    时间: 2015-5-24 15:10
如果你想获得一个float和double需要这两个数其中一个是那个类型的。否则默认是int计算。之后在赋值给一个浮点变量。这样在左面计算的时候就是0在赋值给浮点型就是0.0。可以向我上面那个帖子这么写或者把1或者3加后面加上f类型。double类型的在后面把1或者3写成1.0或者3.0的小数形式
作者: 黯然残影    时间: 2015-5-24 16:08
需要一个是float或double类型,否则俩个数都先按int计算,int转成它们就只有一位了
作者: zhouzhiming88    时间: 2015-5-24 23:55
有效数字的概念:从第一个非零的数字算起的所有数字。都是0,体现不了有效数字的位数,所以都显示0.0。
作者: 下一页5    时间: 2015-5-25 00:07
好深奥啊
作者: 人在旅途~东营    时间: 2015-5-25 00:40
编码的时候记住强转和声明才可以。要不然java本身有自动默认类型的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2