黑马程序员技术交流社区
标题:
io问题
[打印本页]
作者:
一步步
时间:
2013-11-12 13:50
标题:
io问题
本帖最后由 一步步 于 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的之明显不对啊!谁能看出是哪里错了吗?
作者:
零下五度的水
时间:
2013-11-12 14:18
没错啊, double=4.706111111950509E285
注意后面那个E285 是自然指数什么乱七八糟的,
因为这个方法调用了Double.longBitsToDouble() 方法, 你可以去查这个的API文档
人家写Java的人要表现他数学牛逼,我们也拦不住啊
作者:
一步步
时间:
2013-11-12 15:01
double应该=435.978才对啊
作者:
wjj410830911
时间:
2013-11-12 15:31
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();
double d=dis.readDouble(); //你将这2行代码换一下位置
boolean b=dis.readBoolean();//你的位置放反了 JAVA就先用boolean读的double
System.out.println("num="+num+" "+"double="+d+" "+"boolean="+b);
dis.close();
}
}
复制代码
这个读写是按顺序来的 你不能随便读
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2