2015-06-20 89 views
0

我想刪除十進制數中的前導零。刪除前導0直到十進制

所以我想輸出應該是 .3240.324。 我試過str.replaceFirst("^0+(?!$)", "");沒有工作,我也試過正則表達式! 沒有結果! 是的,我正在使用BigDecimal。

回答

3

試試這個

str = str.replaceFirst("^0\\.", "."); 
+0

可使用replaceFirst,其允許一個正則表達式的參數時較短:'str.replaceFirst( 「^ 0。」, 「」);' –

+0

感謝。編輯。 :) –

+0

嗯我的意思是不需要整個if-then-else構造。 'str.replaceFirst(「^ 0。」,「。」);'是完全充分的,因爲當'str'以'0'開頭時'^'只替換'0',而不是'10' 。' –

0

你想這個印刷目的?你不能用這個做任何數學,所以我猜是的。那麼你可以做:

BigDecimal number =new BigDecimal(0.254); 
     System.out.println(number.toString().substring(number.toString().indexOf("0.")+1)); 

輸出

.254000000000000003552713678800500929355621337890625

+0

這將最終導致一些數字的錯誤結果。例如1.24也會導致.24。 –

+0

這麼真實!更新的答案,甚至認爲它現在變得凌亂:) –

2

,如果你想格式化爲BigDecimal0.324.324。然後在下面的工作原理

BigDecimal bd=new BigDecimal("0.23");// this will replace with your BigDecimal 
    DecimalFormat df=null; 
    //check if number is a fraction 
    if(bd.remainder(BigDecimal.TEN).compareTo(BigDecimal.ZERO)>0) 
     df=new DecimalFormat(".###"); 
    else 
     df=new DecimalFormat("##"); 

    System.out.print(df.format(bd));// .format returns string as .23 

0.23->.23 
0->0 
90->90 
80.12->80.12 
+1

然後它將.0添加到非小數! 例如, 90變成90.0 並且0變爲.0 @Amit.rk3 – Vishal

+0

@VishalSaini對於基於其值的相同變量,您不能有不同的格式。這是你必須在代碼中處理的事情,這很容易。如果我理解你的要求,你只需要這種格式的0到1之間的小數。你可以在你的代碼中添加簡單的if條件來檢查你的值是否小於''value.compareTo(BigDecimal.ONE)''。那麼你可以使用上面的格式,否則使用任何你現有的格式,其他數字大於或等於1. –

+0

其實先生!數字大於一個! 例如, 96.6 324.44 所以我必須排序這些數字,然後以排序的方式打印!帶小數爲.45或。### – Vishal