2016-02-19 58 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