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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一步步 中级黑马   /  2013-11-12 13:50  /  923 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 一步步 于 2013-11-12 18:12 编辑

package twenty_one;
import java.io.*;
public class four {
        public static void main(String[] args)throws IOException {
                //wr();
                rd();
        }
public static void wr()throws IOException
{
        DataOutputStream dos=new DataOutputStream(new FileOutputStream("data.txt"));
        dos.writeInt(233);
        dos.writeDouble(435.978);
        dos.writeBoolean(true);
        dos.close();
}
public static void rd()throws IOException
{
DataInputStream dis=new DataInputStream(new FileInputStream("data.txt"));
int num=dis.readInt();
boolean b=dis.readBoolean();
double d=dis.readDouble();
System.out.println("num="+num+"    "+"double="+d+"     "+"boolean="+b);
dis.close();
}
}

这段代码显示结果为;num=233    double=4.706111111950509E285     boolean=true其中Double的之明显不对啊!谁能看出是哪里错了吗?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 警告:不要刷帖

查看全部评分

3 个回复

倒序浏览
没错啊, double=4.706111111950509E285  
注意后面那个E285 是自然指数什么乱七八糟的,
因为这个方法调用了Double.longBitsToDouble() 方法, 你可以去查这个的API文档
人家写Java的人要表现他数学牛逼,我们也拦不住啊
回复 使用道具 举报
double应该=435.978才对啊
回复 使用道具 举报
  1. import java.io.*;
  2. public class four {
  3.         public static void main(String[] args)throws IOException {
  4.                 wr();
  5.                 rd();
  6.         }
  7. public static void wr()throws IOException
  8. {
  9.         DataOutputStream dos=new DataOutputStream(new FileOutputStream("data.txt"));
  10.         dos.writeInt(233);
  11.         dos.writeDouble(435.978);
  12.         dos.writeBoolean(true);
  13.         dos.close();
  14. }
  15. public static void rd()throws IOException
  16. {
  17. DataInputStream dis=new DataInputStream(new FileInputStream("data.txt"));
  18. int num=dis.readInt();
  19. double d=dis.readDouble();   //你将这2行代码换一下位置
  20. boolean b=dis.readBoolean();//你的位置放反了  JAVA就先用boolean读的double
  21. System.out.println("num="+num+"    "+"double="+d+"     "+"boolean="+b);
  22. dis.close();
  23. }
  24. }
复制代码
这个读写是按顺序来的  你不能随便读

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马