今天遇到了一個需求,價格保留兩位小數,不夠補0;
這樣一個簡單的需求,引出一點小問題記錄下,首先我的查詢結果實體中price聲明的類型是BigDecimal,直接查詢出來保留兩位小數,這個好解決,有好幾種方法,我們這里列舉簡單的一種,
DecimalFormat df = new DecimalFormat("#0.00");--指定保留兩位小數
p.setPrice(p.getPrice==null?null:df.format(p.getPrice));
原以為這樣弄是OK的,但是沒想到精度還是丟失,1.20變成1.2
想了會,覺得可能是實體中BigDecimal類型的price在作為Json數據返回的時候會出現這種情況,然后試了一下,將實體類中的price改成了String類型,然后改了下代碼:
DecimalFormat df = new DecimalFormat("#0.00");--指定保留兩位小數
p.setPrice(p.getPrice==null?null:df.format(new BigDecimal(p.getPrice)));
然后就OK了,至於BigDecimal在通過Json轉化的時候為什么會丟失精度,還得百度一下,先下班了,明天繼續。。。。。
