數值保留小數點兩位,但同時去除小數點後多餘0 的 javascript、java實現
阿新 • • 發佈:2019-01-25
今天碰到一個需求。關於小數點的處理,看起來非常簡單的事情,卻花了一定時間做了一些試驗。最後簡單總結一下,以便備忘。
需求簡化一下表達是這樣的:
有A、B兩列,A/B=C。這3列在資料庫中都以decimal存放。
在應用中,要求這3列,最多保留兩位小數,去掉小數點後無意義的0。舉例如下:
3.03表示為3.03
3.30表示為3.3
3.0表示為3
前後端都會改變這幾個資料。
1、前端實現。(javascript)
前端javascript而言,因為小數點精度計算經常有誤差,為確保得到2位小數點,呼叫了toFixed函式。但是,toFixed以後,不管小數點後是不是0,都保留2位。
var a = 6.02;
var b = 3.01
var c = a/b.toFixed(2) ;//c得到了2.00
為了得到2,想了一個迂迴的辦法:c = a/b.toFixed(2)*100/100
2、後端實現。(java)
用java.text.DecimalFormat("0.##")即可。
BigDecimal a = new BigDecimal(“6.02”);
BigDecimal b = new BigDecimal(“3.01”);
與js不同,不能用*100/100的方式,因為java中BigDecimal的運算小數點是以公式中各項的最長小數點位數作為最終結果的小數點位數。這樣處理後結果仍然是2位數。
用DecimalFormat(“0.##”)即可解決。