从java中的文件中读取double值

时间:2011-09-01 17:15:13

标签: java

我的文件仅包含18.746786635311242作为内容而没有别的 当我尝试使用代码

读取该双号时
FileInputStream fin = new FileInputStream("output");
        DataInputStream din = new DataInputStream(fin);
         f = din.readDouble();
        System.out.println(f);
        din.close();

并尝试打印f值显示1.3685694889781536E-71

4 个答案:

答案 0 :(得分:3)

如果是文本,则需要将ti读为文本,而不是二进制。最简单的解决方案是使用BufferedReader。

BufferedReader br = new BufferedReader(new FileReader("output"));
double d = Double.parseDouble(br);
br.close();

或使用扫描仪。

Scanner scan = new Scanner(new File("output"));
double d = scan.nextDouble();
scan.close();

答案 1 :(得分:2)

小数可能会超出系统上双精度的大小,或者只读取一定数量的字节(最多可读取8个),然后将其解释为双精度,尝试使用

BigDecimal f = new BigDecimal(din.readLine());
System.out.println(f);

这应该会给你想要的结果。

答案 2 :(得分:1)

您也可以尝试

Double d = new Double(din.readLine().trim());

答案 3 :(得分:0)

由于DataInputReader.readLine()实际上已被弃用,我会这样做:

FileInputStream fin = new FileInputStream("double.txt");
InputStreamReader isr = new InputStreamReader(fin);
BufferedReader br = new BufferedReader(isr);
BigDecimal f = new BigDecimal(br.readLine().trim());
System.out.println(f);
br.close();
isr.close();
fin.close();

尽管如此,这里的关键是实际使用BigDecimal