首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试使用TextWatcher将EditText格式化为具有两位小数的双精度型

TextWatcher是Android中的一个接口,用于监听EditText中文本的变化。通过实现TextWatcher接口的三个方法,可以在文本变化前、变化中、变化后执行相应的操作。

要将EditText格式化为具有两位小数的双精度型,可以通过TextWatcher来实现。以下是一个示例代码:

代码语言:txt
复制
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;

public class DecimalTextWatcher implements TextWatcher {
    private EditText editText;

    public DecimalTextWatcher(EditText editText) {
        this.editText = editText;
    }

    @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) {
        editText.removeTextChangedListener(this); // 防止递归调用

        String input = s.toString();
        if (input.isEmpty()) {
            editText.setText(""); // 如果输入为空,则清空EditText
        } else {
            try {
                double value = Double.parseDouble(input);
                String formattedValue = String.format("%.2f", value); // 格式化为两位小数
                editText.setText(formattedValue);
                editText.setSelection(formattedValue.length()); // 设置光标位置为末尾
            } catch (NumberFormatException e) {
                // 输入不是合法的双精度型数字,不做任何处理
            }
        }

        editText.addTextChangedListener(this); // 重新添加TextWatcher
    }
}

使用方法:

代码语言:txt
复制
EditText editText = findViewById(R.id.editText);
editText.addTextChangedListener(new DecimalTextWatcher(editText));

这样,当用户在EditText中输入数字时,会自动格式化为具有两位小数的双精度型数字。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java中printf用法总结

④m.n:m指域宽,即对应输出项在输出设备上所占字符数。N指精度。用于说明输出实型数小数位数。为指定n时,隐含精度为n=6位。 ⑤l或h:l对整型指long,对实型指double。...对于精度数,使用%lf格式符输出时,前16位是有效数字,小数6位. ###################################### 对于m.n格式还可以用如下方法表示(例)...System.out.println("单精度浮点:"+d);/*单精度浮点占32位存储空间,在一些 处理器上比精度更快而且只占用精度一般空间,但是当值很大或很小时候,它...变得不准确*/ System.out.println("精度:"+a);/*精度占64位存储空间,在一些现代化 被优化用来进行高速数学计算处理器上比单精度快...:%3$#x,精度%1$1f精度浮点表示:%1$f",a,b,c); //精度格式输出为数字1加f,"X$表示第几个变量,指的是这一行后面给出变量第几个。

1.2K10

Android 实现EditText输入金额

介绍 Android中EditText是一个InputType类型有很多控件,可以来达到不同软键盘效果。如下图: ?...InputType类型 在最近在项目中要实现EditText输入金额,金额限制因素很多,比如,只能输入数字和小数点,首位不能输入0和小数点,小数点后面只能保留两位等等,这些仅仅用InputType是无法实现...设置EditTextInputType 需要将EditTextInputType设置成如下格式,保证用户只能输入小数点和数字: android:inputType="numberDecimal" 或者...return ""; } } //验证小数精度,保证小数点后只能输入两位...CashierInputFilter.java 使用方法 在onCreate中写入代码,moneyEditText为输入框 @Override protected void onCreate

3.1K20
  • 0.57 * 100 === 56.99999999999999 之谜

    this.setData({ cash: +value * 100 // 乘100, 元转化为分 }) } 这段看似没有问题代码, 提交给后台时, 接口却返回参数值格式不正确...在JS中, 无论整数还是小数都是Number类型, 它实现遵循IEEE 754, 是标准Double精度浮点数, 使用固定64位来表示。 看到这里你可能就不想看下去了。...但我们可能不知道是, 小数十进制转化为二进制计算方法是, 小数部分*2, 取整数部分, 直至小数部分为0, 如果永远不为零, 在超过精度最后一位时0舍入1。...阅读完上面一节, 对小数乘法我们也可以有一些自己猜测了。 0.57这个数值在存储时, 本身精度不是很准确, 我们用toPrecision这个方法可以获取小数精度。...例如本文最初遇到BUG const value = Math.round(0.57 * 100); 而我们不太确定精度浮点数运算, 通用解决方案都是小数化为整数, 进行计算后, 再转化为小数就好了

    1.4K10

    c语言自定义输出小数点位数_c语言double类型默认输出小数几位

    C语言中常用小数有两种类型,分别是 float 或 double;float 称为单精度浮点,double 称为精度浮点。...不像整数,小数没有那么多幺蛾子,小数长度是固定,float 始终占用4个字节,double 始终占用8个字节。 c语言double类型默认输出几位小数?...C语言中,输出double类型(精度实型)以及float类型(单精度实型)时,默认输出6位小数(不足六位以 0 补齐,超过六位按四舍五入截断)。...比如计算平均分,一到两位小数就足够了。可是有时六位又不够,需要更多位小数,比如计算高精度平方根。这时可以用printf格式控制。如果要输出n位小数,那么可以用%.nlf格式。其中n为数字。...内容扩展 小数输出 小数也可以使用 printf 函数输出,包括十进制形式和指数形式,它们对应格式控制符分别是: %f 以十进制形式输出 float 类型; %lf 以十进制形式输出 double

    1.7K20

    java BigDecimal用法详解(保留小数,四舍五入,数字格式化,科学计数法转数字等)

    精度浮点变量double可以处理16位有效数。在实际应用中,需要对更大或者更小数进行运算和处理。...BigDecimal(double) 创建一个具有参数所指定精度对象。 BigDecimal(long) 创建一个具有参数所指定长整数值对象。...toString() BigDecimal对象数值转换成字符串。 doubleValue() BigDecimal对象中值以精度数返回。...floatValue() BigDecimal对象中值以单精度数返回。 longValue() BigDecimal对象中值以长整数返回。...表示 小数点前任意位数 2 表示两位小数 格式结果为f 表示浮点 String result = String.format(“%.2f”, num); System.out.println

    8.3K30

    Java中让浮点数据保留两位小数四种方法

    hello,你好呀,我是灰小猿,一个超会写bug程序猿! 今天在进行开发过程中遇到了一个小问题,是关于如何double类型数据保留两位小数。突然发现这方面有一点欠缺,就来总结一下。...一、String类方式 该方式是是使用Stringformat()方法来实现,该方法作用就是规范数据格式,第一个参数传入一个字符串来表示输出数据格式,如保留两位小数使用“%.2f”,第二个参数是要进行格式数据...精度浮点变量double可以处理16位有效数。但是也可以用来定义小数点后两位,但是使用起来比较麻烦,不太推荐使用。...,使用该类浮点数保留二进制方法和BigDecimal类似,但是使用起来也是十分麻烦。...numberInstance.setRoundingMode(RoundingMode.HALF_UP); System.out.println(numberInstance.format(testDounle_01)); 总结一下 对于浮点数据保留两位小数

    10.2K31

    系统讲解 - PHP 浮点数高精度运算

    尽管取决于系统,PHP 通常使用 IEEE 754 精度格式,则由于取整而导致最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时误差传递。...如果确实需要更高精度,应该使用 任意精度数学函数 或者 gmp 函数。...这里关键在于,浮点数小数用二进制表示,转换过程如下: 小数乘以2,取整数部分表示第一位; 小数部分乘以2,取整数部分表示第二位; 再将小数部分乘以2,取整数部分表示第三位; ......浮点数类型包括单精度浮点数(float)和精度浮点数(double)。 同理,不建议使用浮点数类型!!! 浮点数存在误差,当我们使用精度敏感数据时,应该使用定点数(decimal)进行存储。...小结 通过浮点数精度问题,了解到浮点数小数用二进制表示。 分享了用 PHP 任意精度数学函数,来进行高精度运算。

    2K40

    Java中数字类解析(包括格式化数字、大数运算等等)

    格式化数字 掌握math类中各种数学运算方法 生成任意范围随机数 掌握大整数和大小数数字运算方式 格式化数字 Java中如果数据绝对值大于0.001而小于10000000用常规小数表示,否则采用科学计数法表示...// 小数点后格式化为两位 UseApplyPatternMethodFormat("###.##", 123456.789); // 数字转化为千分数形式 UseApplyPatternMethodFormat...随机产生一个布尔值:" + r.nextBoolean()); // 随机产生一个精度值 System.out.println("随机产生一个精度值:" + r.nextDouble...()); // 随机产生一个浮点值 System.out.println("随机产生一个浮点值:" + r.nextFloat()); // 随机产生一个概率密度为高斯分布精度值...System.out.println("随机产生一个概率密度为高斯分布精度值:" + r.nextGaussian()); } } Java中大数运算 来,终于说到重点了,说到大数运算

    1.2K10

    初始数据类型

    ,打印后面的小数点位数少点 double  精度浮点              建议%lf所对印是打印精度浮点数格式数据,打印后面的小数点位数多点 char类型 我们要去存储一个字符,注意:字符它是区分大小写...因此,要在8位字节中储存 该数字,需要把前5位都设置成0,后3位设置成1,如下图所示: 浮点数 在说,单精度浮点(float)以及 精度浮点(double)之前我们就来先讲讲什么是浮点 浮点数与数学中实数概念差不多...当然,计算机在内部使用二进制和2幂进行储存,而不是10 幂。第15章详述相关内容。现在,我们着重讲解这两种类型实际区别。 整数没有小数部分,浮点数有小数部分。...double类型也被称之为精度浮点,它作用是可以打印带有浮点数数字。...同样这两个类型虽说都可以打印出小数,但是它们区别还是有的,存储大小、数值范围、包括精度有效位、double类型都要>float类型  那比如说我要打印3.14159两位小数我该怎么打印呢

    29010

    Java保留两位小数几种写法总结

    大家好,又见面了,我是你们朋友全栈君。 相信大家在平时做项目时,可能会有这样业务需求: 页面或界面上展示数据保留小数点后两位。...,保留小数点后两位 public static String format4(double value) { /* * %.2f % 表示 小数点前任意位数 2 表示两位小数 格式结果为 f...对浮点数进行格式化   占位符格式为: %[index$][标识]*[最小宽度][.精度]转换符 double num = 123.4567899; System.out.print(String.format...可用转换符: b,布尔类型,只要实参为非false布尔类型,均格式化为字符串true,否则为字符串false。...g,浮点数(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入) 总结 以上就是Java中保留两位小数多种写法全部内容了,希望本文内容对大家学习或者工作能带来一定帮助,如果有疑问大家可以留言交流

    10K10

    Java面试之数据类型(一)

    次方~263次方-1 如果确认是long数据类型,那么在声明时一定要加一个L(可以用小写l,但是建议用大写,因为小写和1比较相似,容易认错) 浮点:存储小数数据类型 因为0到1之间有无数多个小数...小数在计算机中都是以近似值存储。所以浮点是有一个精度范围。 浮点中,double是默认数据类型,float只有在数据后加一个f(F)才表示这是一个float数据类型。...1,float 内存占4个字节,32位 单精度浮点精度是7位(一共7位,包括整数部分和小数部分) 2,double(常用存储小数数据类型) 内存占8个字节,64位 精度浮点精度是15(一共...如果参数小于2或者大于36,则parseInt()返回NaN 返回值为:解析后数字 float和double默认值是多少 默认值.png 如何去小数四舍五入保留小数点后两位 // 方式一: double...表示 小数点前任意位数 2 表示两位小数 格式结果为f 表示浮点

    93020

    Java魔法堂:String.format详解

    针对不同数据类型格式化,占位符格式将有所裁剪。 % ,占位符其实字符,若要在占位符内部使用%,则需要写成%% 。...[index$] ,位置索引从1开始计算,用于指定对索引相应实参进行格式化并替换掉该占位符。 [标识] ,用于增强格式化能力,可同时使用多个 [标识] ,但某些标识是不能同时使用。...[.精度] ,对于浮点数类型格式使用,设置保留小数点后多少位。 转换符 ,用于指定格式样式,和限制对应入参数据类型。...四、对字符、字符串进行格式化                       占位符格式为: %[index$][标识][最小宽度]转换符 示例——"hello"格式化为"  hello" String...b,布尔类型,只要实参为非false布尔类型,均格式化为字符串true,否则为字符串false。

    1.6K91

    Lua连续教程之Lua中数值

    虽然这种格式很难阅读,但是这种格式可以保留所有浮点数精度,并且比十进制转换速度更快。...标准Lua使用64个比特位表示所有数值,其中11位为指数。精度浮点数可以表示具有大致16个有效十进制位数,范围从$-10^{308}$到$10^{308}$。...精简Lua使用32个比特位表示精度浮点数,大致具有7个有效十进制位,范围从$-10^{38}$到$10^{38}$。 精度浮点数对于大多数实际应用而言是足够大,但是我们必须了解精度限制。...此外,用十进制表示有限小数在用二进制表示时可能是无线小数。例如,12.7 -20 + 7.3即便是用精度表示也不是0,这是由于12.7和7.3二进制表示不是有限小数。...惯例 我们可以简单地通过增加0.0方法整型值强制转换为浮点值,一个整型值总是可以被转换成浮点值: > -3 + 0.0 -- -3.0 小于$2^{53}$所有整型值表示与精度浮点表示一样

    4.2K20

    万字长文,史上最全Python字符串格式化讲解

    4.补充 四舍五入 vs 四舍六入五 四舍五入 在需要将一个"小数保留小数点后n位"或"保留n位有效数字"时候即需要对数字进行适当取舍,例如需要将1.125四舍五入保留到小数点后两位结果应该为1.13...% 1.125) >>> 1.12 从上面的结果可以看到,1.125保留两位小数结果为1.12, 并非1.13,这是为什么呢?...字符表示截取多少个字符; (10) {{或}}: 转义{或},当需要输出{或}使用使用; (11) type: 详见如下... 3.type: format()格式化与%格式...对于f而言,精度p指的是保留小数点后p位小数; 对于e而言,精度p指的是数据转换为科学计数法后保留小数点后p位; 而g/G模式下,则表示小数点前后保留p位有效数字。...,因为不精确尾数关系,可能导致一些数据失信,如下所示,数据保留两位小数,有的精确为0.14而有的却精确为0.15。

    4.6K20

    java中保留两位小数方法_java float保留两位小数

    大家好,又见面了,我是你们朋友全栈君。 项目中有一个小需求,两个整数相除,结果需要保留两位小数,即1.00、0.50这种数据格式。...x/y已经为整数0,因此此处只增加两位小数0 网上有一种写法,用了如下方法,他含义是四舍五入,保留两位小数,但需要小数有值, double a = new BigDecimal((float)10/20...,精度是8位有效数字,内存分配4个字节,占32位,取值范围是10-38次方到1038次方,有效小数位6-7位。...对应double是精度类型,精度是17位有效数字,取值范围是10-308次方到10308次方,double占用8个字节存储空间。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站立刻删除。

    3.7K30
    领券