我有一台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)));