Android 輸入金額限制,各種限制

2021-09-20 04:50:05 字數 1778 閱讀 1462

小菜最近因工作需要做乙個支付金額對話方塊的小模組,技術很淺顯,遇到幾個小坑,分享給大家~

需求小菜遇到的坑之一:

其他頁面中獲取到的金額需要儲存兩位小數,本來我打算直接用 string 轉為 double 型別,但是遇到儲存精度問題(string=19.99 ->double=19.98),所以借鑑bigdecimal 方式,如圖:

string->double精度轉換

小菜遇到的坑之二:

只可保留兩位小數,即有兩位小數後再輸入不顯示;若先輸入乙個長度,例如1234,移動游標,再在1234之間點小數點,只可有12.34或123.4或1234.而不可是1.234

小菜遇到的坑之三:

時時判斷輸入金額不可大於10000,自己用了乙個很low的方法:

時時判斷金額

直接上關鍵**吧(依舊很low,僅供借鑑)

final edittext amountet = butterknife.findbyid(view, r.id.pay_view_amount_tv);

double amountdouble = double.parsedouble(amount);

bigdecimal bignum = new bigdecimal(amountdouble);

amountet.settext(bignum.setscale(2, bigdecimal.round_half_up) + "");

amountet.setfilters(new inputfilter else

//驗證小數點精度,保證小數點後只能輸入2位

int index = desttext.indexof(".");

int length = dend - index;

if (dest.tostring() != null && dest.tostring().length() > 0 && dest.tostring().contains("."))

} else if (amoarr.length > 1 && amoarr[amoarr.length - 1].length() >= 2)

if (length > 10)

} else else

string amoarr = (dest.tostring()).split("\\.");

int indexpoint = dest.tostring().indexof(".");

if (dstart <= indexpoint) else if (amoarr.length > 1 && amoarr[amoarr.length - 1].length() >= 2) else if (source.equals(".") && dest.tostring().length() - dstart > 2) else if (tempamo > 0.00 && tempamo <= 9999.99) else else else {

toastutils.showshort(mcontext, "請輸入一定金額");

// 取消讚賞

textview tvpaycancel = butterknife.findbyid(view, r.id.pay_view_cancel_tv);

tvpaycancel.setonclicklistener(new view.onclicklistener() {

@override

public void onclick(view v) {

materialdialog.dismiss();

效果圖

Android 輸入框限制字元輸入數

有時候對android的輸入框有字元輸入數量的限制,並且顯示字元輸入的數量。通過以下方式可以實現 import android.content.context import android.content.res.typedarray import android.telephony.smsmess...

輸入框輸入金額

用法 第一種 inputfilter filters edshopprice.setfilters filters edmarketprice.setfilters filters 第二種 edshopprice.setfilters new inputfilter edmarketprice.se...

js價格金額輸入限制 (無精度 科學計數法問題)

1 基本input都是進行字串驗證限制,因為轉金額驗證會更麻煩,處理大數值的問題 2 超過16位的數值都會有精度問題,因為計算機的進製是二進位制,進製是按二進位制,不是十進位制的四捨五入,同時js支援的數值位數有限 引入bignumber處理超過16位的數值 bignumber相關用法 格式限制 必...