BigDecmal使用stripTrailingZeros()遇到的坑

BigDecimal雖然相對double和float會降低性能,但是處理浮點數的時候不會丟失精度。
BigDecimal的stripTrailingZeros()是去掉多餘的0,BigDecimal的默認構造方法是如果你不指定傳入的數字類型,默認是double類型,所以這裏如果不將傳入的數字指定爲字符串的話會出現精度丟失。stripTrailingZeros()不光會去掉小數點後的沒用的0,如果你的整數位的末尾數字也是0的話,它會將這個整數變成科學計數法,神坑。
所以如果你不能確定你傳入的數是整數還是浮點數,那還是用正則表達式去掉吧
String s=s.replaceAll(“0+?","")0.100.00100.Strings=s.replaceAll("0+?", ""); 這個正則只能去掉多餘的0,不能去掉. 所以如果你的類型是100.00,那用了這個正則只會變成100. 還要用一個正則 String s=s.replaceAll("0+?”, “”);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章