1. 程式人生 > >Android程式中價格的處理

Android程式中價格的處理

本週看到一則新聞“Bug致損失400億,判程式設計師坐牢”,所做的App凡是牽扯到錢的地方就需要格外謹慎,對於程式碼的質量也很高,為了精確錢數的運算,想再次分享一下自己的經驗: 凡是涉及金錢計算的地兒,把數值轉換為Bigdecimal,由於Intent沒有intent.putBigdecimal()這一說,所以最終還是要將金額轉換為double型別,注意要是double型別。 解析BigDecimal:BigDecimal一共有4個構造方法 BigDecimal(int) 建立一個具有引數所指定整數值的物件。 BigDecimal(double) 建立一個具有引數所指定雙精度值的物件。 BigDecimal(long) 建立一個具有引數所指定長整數值的物件。 BigDecimal(String) 建立一個具有引數所指定以字串表示的數值的物件。 BigDecimal 的運算方式 不支援 + - * / 這類的運算 它有自己的運算方法 BigDecimal add(BigDecimal augend) 加法運算 BigDecimal subtract(BigDecimal subtrahend) 減法運算 BigDecimal multiply(BigDecimal multiplicand) 乘法運算 BigDecimal divide(BigDecimal divisor) 除法運算實際用到的例子: BigDecimal bd = singlePrice.multiply(buyNum).add(new BigDecimal(a).multiply(buyNum));//加法運算 totalPrice = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();//將數值轉換為double型別 java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");//格式化輸出內容 productDetailTotalPrice.setText("¥" + df.format(totalPrice)); bd = new BigDecimal(a).multiply(buyNum);//乘法運算 packageTotalPrice = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();