我想刪除十進制數中的前導零。刪除前導0直到十進制
所以我想輸出應該是 .324
不 0.324
。 我試過str.replaceFirst("^0+(?!$)", "");
沒有工作,我也試過正則表達式! 沒有結果! 是的,我正在使用BigDecimal。
我想刪除十進制數中的前導零。刪除前導0直到十進制
所以我想輸出應該是 .324
不 0.324
。 我試過str.replaceFirst("^0+(?!$)", "");
沒有工作,我也試過正則表達式! 沒有結果! 是的,我正在使用BigDecimal。
試試這個
str = str.replaceFirst("^0\\.", ".");
你想這個印刷目的?你不能用這個做任何數學,所以我猜是的。那麼你可以做:
BigDecimal number =new BigDecimal(0.254);
System.out.println(number.toString().substring(number.toString().indexOf("0.")+1));
輸出
.254000000000000003552713678800500929355621337890625
這將最終導致一些數字的錯誤結果。例如1.24也會導致.24。 –
這麼真實!更新的答案,甚至認爲它現在變得凌亂:) –
,如果你想格式化爲BigDecimal
值0.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
然後它將.0添加到非小數! 例如, 90變成90.0 並且0變爲.0 @Amit.rk3 – Vishal
@VishalSaini對於基於其值的相同變量,您不能有不同的格式。這是你必須在代碼中處理的事情,這很容易。如果我理解你的要求,你只需要這種格式的0到1之間的小數。你可以在你的代碼中添加簡單的if條件來檢查你的值是否小於''value.compareTo(BigDecimal.ONE)''。那麼你可以使用上面的格式,否則使用任何你現有的格式,其他數字大於或等於1. –
其實先生!數字大於一個! 例如, 96.6 324.44 所以我必須排序這些數字,然後以排序的方式打印!帶小數爲.45或。### – Vishal
可使用replaceFirst,其允許一個正則表達式的參數時較短:'str.replaceFirst( 「^ 0。」, 「」);' –
感謝。編輯。 :) –
嗯我的意思是不需要整個if-then-else構造。 'str.replaceFirst(「^ 0。」,「。」);'是完全充分的,因爲當'str'以'0'開頭時'^'只替換'0',而不是'10' 。' –