2019独角兽企业重金招聘Python工程师标准>>>

package com.example.astart;

import java.text.DecimalFormat;

import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.widget.EditText;

public class MyUtils {
    /**
     * 格式化小数
     * @param context
     * @param paEditTexts
     * @param limit 保留小数位数
     */
    public static void setEditTextAccuracys(final Context context,final int limit,EditText...paEditTexts){
        if(paEditTexts == null) return;
        for (int i = 0; i < paEditTexts.length; i++) {
            setEditTextAccuracy(context,paEditTexts[i],limit);
        }
    }
    
    /**
     * 格式化小数
     * @param context
     * @param editText
     * @param limit 0 不限制小数位数
     */
    private static void setEditTextAccuracy(final Context context,final EditText editText, final int limit) {
        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if(limit != 0){
                    /**
                     * 限制输入金额最多为 limit 位小数
                     */
                    if (s.toString().contains(".")) {
                        if (s.length() - 1 - s.toString().indexOf(".") > limit) {
                            s = s.toString().subSequence(0,
                                    s.toString().indexOf(".") + limit + 1);
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    }
                }
                /**
                 * 第一位输入小数点的话自动变换为 0.
                 */
                if (s.toString().trim().substring(0).equals(".")) {
                    s = "0" + s;
                    editText.setText(s);
                    editText.setSelection(2);
                }

/**
                 * 避免重复输入小数点前的0 ,没有意义
                 */
                if (s.toString().startsWith("0")
                        && s.toString().trim().length() > 1) {
                    if (!s.toString().substring(1, 2).equals(".")) {
                        editText.setText(s.subSequence(0, 1));
                        editText.setSelection(1);
                        return;
                    }
                }
                
            }

@Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}
            
            @Override
            public void afterTextChanged(Editable edit) {
            }
        });
        
        if(limit != 0){
            editText.setOnFocusChangeListener(new OnFocusChangeListener() {
                
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if(!hasFocus){
                        if(!editText.getText().toString().isEmpty()){
                            try {
                                double value = Double.parseDouble(editText.getText().toString());
                                DecimalFormat format = new DecimalFormat("0.00");
                                editText.setText(format.format(value));
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }
            });
        }
        
    }
}

使用

import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;

public class MainActivity extends Activity {
private EditText monkey;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        monkey=(EditText) findViewById(R.id.et_monkey);
        MyUtils.setEditTextAccuracys(this, 2, monkey);

//上下文,最多保留几位小数,EditText控件名
    }

}

转载于:https://my.oschina.net/u/2531348/blog/726851

EditText 自动保留两位小数相关推荐

  1. java保留两位小数(java保留两位小数)

    197保留两位小数是多?1.197保留两位小数是多少 1.20 P.S. 你的支持是我坚持的动力~,点下好评吧,亲!!! 两位小数的积是3?两位小数的积是3.872,保留两位小数是,保留 选中区域,点 ...

  2. JavaScript保留两位小数,自动补零

    传来的数值或字符串,转换为浮点数.然后将小数点向右移动两位小数,再利用Math.round()方法进行四舍五入计算,最后除以100,这样实现保留两位小数. var value = Math . rou ...

  3. sql实现四舍五入保留两位小数,小数不足自动补0

    round round实现四舍五入(小数位>2) select round(123.4567,2) round(小数位小于2) select round(123.4,2) round小数位小于2 ...

  4. java.math.BigDecimal保留两位小数,保留小数,精确位数

    http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现   java保留两位小数问题 ...

  5. bigdecimal 保留两位小数_Python的保留小数及对齐

    Python的保留小数: 方法1:用round函数(有坑). median = 12.3004886print(round(median, 2)) # 保留两位小数print(round(median ...

  6. php 两位小数包含0,PHP保留两位小数 - osc_8dm0sbbd的个人空间 - OSCHINA - 中文开源技术交流社区...

    我们在项目里经常需要保留小数位数,比如显示金额的时候通常需要保留两位小数位数,除了可以在设计数据库的时候将金额字段设置为decimal(n,2)形式的,通过PHP也可以处理小数数位,PHP中可以处理数 ...

  7. 实数截断式保留两位小数

    实数截断式保留两位小数 不四舍五入保留两位小数 时隔两年,我胡汉三又回来啦!嚯哈哈哈哈!!! 项目场景: 我们的编译器一般都是自动帮我们在输出数据的时候四舍五入的,那么当我们想不用四舍五入进行输出的时 ...

  8. js强制保留两位小数

    计算过程中,发现浮点数如果没有小数位,就会自动舍掉小数点.现在想要做的是无论是整数还是多位小数,强制保留两位小数 1. 转为字符串,对字符串进行操作 //强制保留2位小数,如:2,会在2后面补上00. ...

  9. mysql的decimal保留两位小数_C#中的decimal怎么保留两位小数

    展开全部 在C语言中编写如下程序: 1.decimal d = 0.234M: 2. *保留小数后两位*(注释) 3.d=Math.Round(d,2): 最终结果为:d=0.23,即为6261696 ...

最新文章

  1. python 列出出当前目录及所有子目录下的文件
  2. 计算机基础知识自考真题,自考《计算机应用基础》基础试题
  3. Contains Duplicate II
  4. 三阶魔方花样玩法,公式汇总
  5. 第一章:数组与指针概念剖析
  6. C++中__uuidof是干什么用的
  7. 怎样才能在前端职场中拥有更强的竞争力?
  8. 根据运算符优先级解析SQL规则表达式
  9. spring 属性注入
  10. CSDN如何赚积分及C币
  11. 两台电脑怎么互传文件?用它就能搞定!
  12. 计算机二级C语言怎么过
  13. WinMerge 过滤器的使用方法
  14. 在 VS Code 中开始使用 Python
  15. 多媒体计算机主要有哪些基本特性,多媒体计算机的基本特性
  16. 分形--Cantor三分集
  17. android架构师解压密码,咕泡Java架构师第三期完整版
  18. matlab为什么生成obj文件,为文件输入和输出创建新的 System object
  19. python卸载模块的方法汇总_Python卸载模块的方法
  20. SWEBOK软件工程知识体系 - 13.计算基础

热门文章

  1. dsp广告和信息流广告区别_一文搞懂DSP-蘑菇街DSP广告实践
  2. uniapp光标自动定义到文本框_如何在Mac上的照片应用中创建自定义日历
  3. linux:命令常用操作
  4. anconda安装及opencv配置
  5. 【赠书】如何构建企业级的推荐系统?这本书值得一看
  6. 【模型解读】从2D卷积到3D卷积,都有什么不一样
  7. 开启计算机开机引导兼容模式,Intel决定2020年封禁UEFI兼容模式 将无法开启CSM来启动操作系统...
  8. java 动态编译 canino_java动态编译
  9. boost第 4 章 事件处理
  10. 团队作业5-Alpha版本测试报告(彼岸芳华队)