2016-02-19 62 views
0

我在數據庫中選擇一個數字列。例如:乘以從數據庫中選擇的大十進制數

   BigDecimal total_price_bg; 
       BigDecimal unit_price_bg; 

       if (results.next()) { 
        unit_price_bg = results.getBigDecimal("UNIT_PRICE"); 
        total_price_bg = unit_price_bg.multiply(unit_price_bg); // I have trouble here.. 
        System.out.println(total_price_bg); 
       }  

第一行可能包含10.25,第二行7.03和第三行可能包含371.09。我如何用相同的變量多次乘以大數小數?它實際上可能嗎?提前致謝。

+0

爲什麼不'BigDecimal.ONE'然後'total_price_bg = total_price_bg.multiply(results.getBigDecimal初始化'total_price_bg' (「UNIT_PRICE」)))' –

回答

2

你的意思是這樣嗎?

  BigDecimal total_price_bg = BigDecimal.ONE; 

      while (results.next()) { 
       BigDecimal unit_price_bg = results.getBigDecimal("UNIT_PRICE"); 
       total_price_bg = total_price_bg.multiply(unit_price_bg.pow(2)); 
      }  
      System.out.println(total_price_bg); 

這不斷將UNIT_PRICE的值平方化爲變量total_price_bg。我平方unit_price_bg的價值,因爲我注意到你乘以它本身的時間,但也許你的意思是:

  BigDecimal total_price_bg = BigDecimal.ONE; 

      while (results.next()) { 
       BigDecimal unit_price_bg = results.getBigDecimal("UNIT_PRICE"); 
       total_price_bg = total_price_bg.multiply(unit_price_bg); 
      }  
      System.out.println(total_price_bg); 
+0

是'10.25 * 7.03 * 371.09'的總數應該是'26739.817675'。謝謝,我會嘗試你的解決方案。 – sg552

+0

@ sg552絕對是使用BigDecimal的明智選擇。你現在可能正在處理更小的數字,但並不總是這樣,BigDecimal是唯一可以保證不會溢出的類型。 – Neil