在EditText输入数字的时候,通常我们需要限制小数点前后位数.比如金额输入一般我们需要限制小数点后面最多2位.我们可以通过 TextWatcher 实现.

public class MyWatcher implements TextWatcher {
private int beforeDot;
private int afterDot;
/**
* 构造器
*
* @param beforeDot 小数点前位数 不限制输入-1
* @param afterDot 小数点后位数 不限制输入-1
*/
public MyWatcher(int beforeDot, int afterDot) {
this.beforeDot = beforeDot;
this.afterDot = afterDot;
} @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override
public void afterTextChanged(Editable s) {
judge(s);
} private void judge(Editable editable) {
String temp = editable.toString();
int posDot = temp.indexOf(".");
//直接输入小数点的情况
if (posDot == 0) {
editable.insert(0, "0");
return;
}
//连续输入0
if (temp.equals("00")) {
editable.delete(1, 2);
return;
}
//输入"08" 等类似情况
if (temp.startsWith("0") && temp.length() > 1 && (posDot == -1 || posDot > 1)) {
editable.delete(0, 1);
return;
} //不包含小数点 不限制小数点前位数
if (posDot < 0 && beforeDot == -1) {
//do nothing 仅仅为了理解逻辑而已
return;
} else if (posDot < 0 && beforeDot != -1) {
//不包含小数点 限制小数点前位数
if (temp.length() <= beforeDot) {
//do nothing 仅仅为了理解逻辑而已
} else {
editable.delete(beforeDot, beforeDot + 1);
}
return;
} //如果包含小数点 限制小数点后位数
if (temp.length() - posDot - 1 > afterDot && afterDot != -1) {
editable.delete(posDot + afterDot + 1, posDot + afterDot + 2);//删除小数点后多余位数
}
}
}

使用的时候 如下:

                <EditText
android:id="@+id/et_i_want"
android:layout_width="wrap_content"
android:layout_height="25dp"
android:hint="0.00"
android:inputType="numberDecimal"/>
etIWant.addTextChangedListener(new MyWatcher(-1, 2));//限制小数点后最多2位

EditText限制小数点前后位数的更多相关文章

  1. C# Double保留小数点后面位数

    C# Double保留小数点后面位数 有的时候我们要对一些数据进行百分比的操作.一般的数据我们只要用 .ToString("P")就可以得到小数点后2位的百分比.而且是自动 加上% ...

  2. python 浮点运算 及 小数点精确位数

    >>> 1050 / 3133>>> 1050 / float(31)33.87096774193548                     # 分子或者分母用 ...

  3. java之数据处理,小数点保留位数

    1.返回字符串类型,保留后两位: public static String getRate(Object d) { return String.format("%.2f", d); ...

  4. input限制小数点的位数

    在做限制input小数点的时候,我本来想通过vue里面的的watch监听来实现, ---实现逻辑是,通过监听输入的内容,当出现"."(点)的时候,记录通过indexOf获取点的位置 ...

  5. 修改ECSHOP的小数点保留位数

    客户站点http://carfa.hk79.2ifree.com 原来的程序直接取整了,现在做下面修改. 首先打开文件 /carfa/web/includes/lib_common.php 第一步:在 ...

  6. xcart小数点位数

    xcart小数点的位数默认是2位,有时候需要根据需要更改位数:一开始以为把数据库中的数据类型的位数更改过后,就能生效,结果发现xcart在程序中作了限制,只能是2位.那么只能通过更改程序的方式来更改了 ...

  7. iOS textField输入金额的限制,小数点前9位,后面两位

    iOS textField输入金额的限制,小数点前9位,后面两位,如果不加小数点,最大位数是9位,加上小数点,最大位数是12位,超出最大位数可删除 - (BOOL)textField:(UITextF ...

  8. JAVA float double数据类型保留2位小数点5种方法

    /** * Java 两个整数相除保留两位小数,将小数转化为百分数 * java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数,必须将两整数其一或 ...

  9. java小数点的两种处理方法

    1. java.text.DecimalFormat;        //此方法为四舍五入 例如:DecimalFormat df = new DecimalFormat("#.0" ...

随机推荐

  1. setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式

    <script type="text/javascript"> setInterval(function(){ var myDate = new Date(); var ...

  2. (转载) 利用国内的镜像,加速PIP下载

    国内源: 新版ubuntu要求使用https源,要注意. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.c ...

  3. test1.xlsx

    耿丹CS16-2班第三次作业汇总 排名 学号后三位 姓名 作业顺序 作业情况 第三周博客 总得分 博客园地址 1 232 周* 1 8.5 3 12.5 http://www.cnblogs.com/ ...

  4. Eclipse ndk fix插件开发

    一. 手工修复ndk环境bug Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如 ①. 头文件不识别 ②. 头文件识别了, 类型不识别 针对这一的bug,我们一般按照如 ...

  5. MySql的一些用法

    1.怎样找到MySql数据的存储目录? 答:从服务中查看正在运行的MySql,查看它的启动参数,可能是这个样子: "D:\Program Files\MySQL\MySQL Server 5 ...

  6. DataTable导出到Excel

    简单的导出到Excel中: 代码如下: using System; using System.Collections.Generic; using System.Data; using System. ...

  7. 关于Python对齐问题

    最近在学习父与子的编程之旅,书上有一个关于猜数的游戏代码,自己敲了以后老是不对,仔细检查后发现是对齐问题. 废话不说了,直接上图: 上面是正确的,下面这个是有问题的,大家可以看下Python代码如果没 ...

  8. shell 脚本随机抽取班级学生

    #/bin/bash jw=(name1,name2,name3......name39) ..} do a=$(date +%N) b=$() ]" "${jw[$b]} don ...

  9. Ubuntu和Win双系统解决主板时间差

    由于U和W两个系统的默认时间相差8小时,且会自动改变电脑主板里的默认时间,需要在U中进行设置. timedatectl set-local-rtc true

  10. “div+css”下拉菜单

    <style> html, body { margin: 0; padding: 0; } .btn-group{ font-size: 14px; position: relative; ...