在JRockit中将int转换为double问题

时间:2013-07-18 10:52:55

标签: casting int double java1.4 jrockit

我在JRockit实例上运行了一个bea weblogic 8.1 sp5服务器,其中包含以下java版本:

* java -version java版“1.4.2_10” Java(TM)2运行时环境,标准版(版本1.4.2_10-b03) BEA JRockit(R)(建立R26.3.0-32-58710-1.4.2_10-20060308-2022-linux-ia64,)*

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

int debt = 27003 ; //以美分计; System.out.println(((double)debt18 / 100)); //金额为欧元

打印结果为 270.03000000000003

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

过去你碰巧遇到过类似的问题吗?

请告诉我一个不太容易出错的方法将所需值传递给double变量,最好是使用标准的java库?

1 个答案:

答案 0 :(得分: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)));