我有以下输入:
37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676
我希望保存它至少保持10sf的准确度。
我的代码:
BufferedReader br = null;
DecimalFormat d = new DecimalFormat("#");
try {
br = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
while(br.readLine() != null) {
String x = d.format(Double.parseDouble(br.readLine()));
System.out.println(x);
}
但是,在这一点上,我可以将x转换为双倍维持精度吗?
谢谢:)
答案 0 :(得分:4)
您应该能够使用double
维持大约15位有效数字的准确性。您只需要保持Double.parseDouble
返回的值,而不是只是格式化它。您还需要只阅读每一行:
String line;
while ((line = br.readLine()) != null) {
double value = Double.parseDouble(line);
// Use value...
}
如果实际需要确切的值(而不是问题中所述的10位有效数字),如果它们都是整数,则应使用BigInteger
,或{{1}如果某些值实际上是非整数。