0

我有一个在 JRockit 实例上运行的 bea weblogic 8.1 sp5 服务器,具有以下 java 版本:

*java -version java version "1.4.2_10" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_10-b03) BEA JRockit(R) (build R26.3.0-32-58710-1.4.2_10-20060308- 2022-linux-ia64,)*

执行以下代码时遇到问题:

int 债务 = 27003 ; //金额以美分为单位;System.out.println(((双) 债务18 / 100)); //欧元金额

打印结果为270.03000000000003

我确信这是一个虚拟机错误,因为它可以在这个特定的 jrockit 机器上观察到。

您过去是否碰巧遇到过类似的问题?

您能否告诉我一种将所需值传递给双变量的不易出错的方法,最好使用标准的 java 库?

4

1 回答 1

0

我知道这已经很老了,但我有一个答案,也许它会在未来帮助某人。我使用 DecimalFormat 对象只保留对我有用的数字。只需要一位小数,它总是正确的,即使出现错误,所以这对我来说没问题。

代码如下:

String pattern = "##0.0#";
DecimalFormatSymbols separator = new DecimalFormatSymbols();
separator.setDecimalSeparator('.');
DecimalFormat decimalFormatter = new DecimalFormat(pattern, separator);

int debt = 27003; //amount in cents;
System.out.println(decimalFormatter.format(((double) debt18 / 100)));
于 2014-03-05T09:48:38.283 回答