将int转换为JRockit中的双重问题



我有一台bea-weblogic 8.1 sp5服务器,运行在JRockit实例上,java版本如下:

*java版本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-线路ia64,)*

执行以下代码时,我面临一个问题:

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

打印结果为270.03000000000003

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

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

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

我知道这很古老,但我有一个答案,也许它会在未来对某人有所帮助。我使用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)));

相关内容

  • 没有找到相关文章

最新更新