2013-07-18 67 views
0

我有以下的Java版本上的JRockit實例運行的BEA WebLogic 8.1 SP5服務器:鑄造INT雙重問題的JRockit

* Java的版本 Java版本 「1.4.2_10」 的Java( TM)2運行環境標準版(版本1.4.2_10-b03) BEA JRockit(R)(build R26.3.0-32-58710-1.4.2_10-20060308-2022-linux-ia64,)*

執行以下代碼時遇到問題:

int debt = ; //以美分計; System.out.println(((double)debt18/100)); //在歐元

打印結果量爲270.03000000000003

我確信這是虛擬機錯誤,因爲它是該特定的JRockit機器上可觀察到的。

您是否碰巧遇到類似的問題?

您能否告訴我一個不太容易出錯的方式來將想要的值傳遞給雙變量,最好使用標準的java庫?

回答

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)));