0

我正在使用 StringTokenizer 类来读取文本文件。在文本文件中,有几个双精度值。

interest = Double.parseDouble(aString.nextToken());
System.out.println(interest);

它在控制台中显示得很好,但是当我稍后尝试打印时,

System.out.println("Fixed Daily Interest = " + customers[i].get_interest() + "\n");

精度总是丢失小数点。例如,其中一个值是 0.055,当我在代码的第一部分解析它后打印它时,它会完全显示在控制台中。然而,在另一种方法中,无论我尝试什么,尝试打印它都会给我 0.05,而不是将其解析为双变量,使用 DecimalFormat 等。任何善良的灵魂会指导我在这里犯的错误是什么?我在这里真的很困惑。

4

2 回答 2

1

您可以使用DecimalFormat在 Java 中获得精度。

阅读更多关于此的内容后发现这篇文章可能会给您一些指示。基本上,如果您需要更高的精度,您将需要转移到一个专门设计的类来处理这个问题。该帖子列出了几个选项。

于 2011-03-21T22:27:32.353 回答
0

BigDecimal如果您需要额外的精度,请尝试使用。如果问题是读取双精度值,然后打印输出不同的值,请记住二进制 <-> 十进制数字表示的问题。一些十进制数不能以二进制精度有限的二进制格式表示。此外,当使用数字操作时,有时会打印结果为 4,99997 而不是十进制 5,问题在于该数字以二进制表示。

确保数字永远不会被触及,那么打印它的输出必须始终相同,如果您使用toString()或 直接在System.out.println("" + number);.

于 2011-03-22T00:39:18.297 回答