我有以下输入:
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 转换为 double 保持精度吗?
谢谢:)
最佳答案
您应该能够使用 double
保持大约 15 位有效数字的准确性。您只需要保留 Double.parseDouble
返回的值,而不是只是 格式化它。您还只需阅读每一行一次:
String line;
while ((line = br.readLine()) != null) {
double value = Double.parseDouble(line);
// Use value...
}
如果您实际上需要确切的值(而不是问题中所述的 10 位有效数字),如果它们都是整数,您应该使用 BigInteger
,或者 BigDecimal
如果某些值实际上是非整数。
关于java - double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17238197/