JAVA中價格金額的儲存型別
阿新 • • 發佈:2020-06-30
在java專案中,我們會遇到價格、金額的資料,這時候我們java中應該用BigDecimal型別,資料庫用decimal型別, 長度可以自定義, 如18; 小數點我們專案中用的是2, 保留2位小數. 此外還要注意的就是預設值,一定寫成0.00,不要用預設的NULL, 否則在進行加減排序等操作時, 會帶來轉換的麻煩。
以下是一些換算程式碼
package com.bigdecimal; import java.math.BigDecimal; import java.math.RoundingMode; public class Test { public static voidmain(String[] args) { BigDecimal num=new BigDecimal("2"); BigDecimal num1=new BigDecimal("0.01"); //加法 System.out.println(num.add(num1)); //減法 System.out.println(num.subtract(num1)); //乘法 System.out.println(num.multiply(num1)); //除法 System.out.println(num.divide(num1, RoundingMode.HALF_UP));//比較兩個數大小 if (num.compareTo(num1)==-1){ System.out.println(num+"小於"+num1); }else if (num.compareTo(num1)==0){ System.out.println(num+"等於"+num1); }else if (num.compareTo(num1)==1){ System.out.println(num+"大於"+num1); } //精度換算 BigDecimal num2=newBigDecimal("4.281"); //刪除多餘的小數位 System.out.println(num2.setScale(2,BigDecimal.ROUND_DOWN)); //直接進位 System.out.println(num2.setScale(2,BigDecimal.ROUND_UP)); //四捨五入 System.out.println(num2.setScale(2,BigDecimal.ROUND_HALF_UP)); //五舍六入 System.out.println(num2.setScale(2,BigDecimal.ROUND_HALF_DOWN)); } }
結果
2.01
1.99
0.02
200
2大於0.01
4.28
4.29
4.28
4.28