2 回答
TA貢獻1865條經(jīng)驗 獲得超7個贊
您似乎在注釋中指出初始字符串"0087"是具有兩位小數(shù)的定點表示,因此在最后兩位數(shù)之前有一個隱含的小數(shù)點。有幾種方法可以將其轉(zhuǎn)換為相應的BigDecimal,但我自己,我會這樣做:
BigDecimal result = BigDecimal.valueOf(Long.parseLong("0087"), 2);這里的關(guān)鍵是要了解BigDecimals 具有兩個特征:任意長度的十進制數(shù)字序列,以及以小數(shù)點右側(cè)的位數(shù)的形式傳達最低有效數(shù)字位值的比例觀點。上面演示的特定工廠方法接受這些作為單獨的參數(shù),盡管它僅在數(shù)字字符串足夠短以表示為時才有效long。2直接對應于輸入中的(隱式)小數(shù)位數(shù)。
將結(jié)果輸出BigDecimal為“00.87”而不是“0.87”是一個單獨的問題,但如果它真的是你想要的東西是可行的。
TA貢獻1852條經(jīng)驗 獲得超1個贊
試試這個代碼
String str="0087";
int pos=str.lastIndexOf("0");
String resultat=str.substring(0,pos+1);
resultat+=".";
resultat+=str.substring(pos+1);
System.out.println(resultat);
new BigDecimal(resultat);
添加回答
舉報
