精华内容
下载资源
问答
  • 2021-05-08 11:25:27

    Android在Edittext中限制小数点后面的位数及小数点前面的位数,代码如下:
    java实现:

    	private int behind = 2 //小数点后面限制位数
    	private int front = 3 //小数点前面限制位数
        editText.addTextChangedListener(new TextWatcher() {
     
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                                      int count) {
     
                if (s.toString().contains(".")) {
                    if (s.length() - 1 - s.toString().indexOf(".") > behind) {
                        s = s.toString().subSequence(0,
                                s.toString().indexOf(".") + (behind+1));
                        editText.setText(s);
                        editText.setSelection(s.length());
                    }
                } else {
                    if (s.length() > front) {
                        editText.setText(s.subSequence(0, front));
                        editText.setSelection(s.length() - 1);
                    }
                }
     
                if (s.toString().trim().substring(0).equals(".")) {
                    s = "0" + s;
                    editText.setText(s);
                    editText.setSelection(behind);
                }
     
                if (s.toString().startsWith("0")
                        && s.toString().trim().length() > 1) {
                    if (!s.toString().substring(1, behind).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 s) {
                // TODO Auto-generated method stub
     
            }
     
        });
    
    

    kotlin实现:

     	private val behind = 2
        private val front = 3
       edKM.addTextChangedListener(object : TextWatcher {
                    override fun afterTextChanged(s: Editable?) {
                    }
    
                    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                    }
    
                    override fun onTextChanged(p0: CharSequence?, start: Int, before: Int, count: Int) {
                        var s = p0.toString()
                        if (s.contains(".")) {
                            if (s.length - 1 - s.indexOf(".") > behind) {
                                s = s.subSequence(
                                    0,
                                    s.indexOf(".") + (behind + 1)
                                ).toString()
                                edKM.setText(s)
                                edKM.setSelection(s.length);
                            }
                        } else {
                            if (s.length > front) {
                                edKM.setText(s.subSequence(0, front))
                                edKM.setSelection(s.length - 1)
                            }
                        }
    
                        if (s.trim().substring(0) == ".") {
                            s = "0$s"
                            edKM.setText(s);
                            edKM.setSelection(behind)
                        }
    
                        if (s.startsWith("0")
                            && s.trim().length > 1
                        ) {
                            if (s.substring(1, behind) != ".") {
                                edKM.setText(s.subSequence(0, 1));
                                edKM.setSelection(1);
                                return
                            }
                        }
                    }
                })
    

    END

    更多相关内容
  • JAVA中关于如何控制小数点后面位数

    万次阅读 2018-07-20 17:07:34
    在我们编程的过程中的时候,也是我(一个java新学员)遇到过的问题,在输出小数的时候觉得小数点后面的位数太长了,譬如10.399999999999.....这样的数字,我只想取小数点后面两位。这个时候就需要通过DecimalFormat...

    在我们编程的过程中的时候,也是我(一个java新学员)遇到过的问题,在输出小数的时候觉得小数点后面的位数太长了,譬如10.399999999999.....这样的数字,我只想取小数点后面两位。这个时候就需要通过DecimalFormat这个类来控制这个情况。

    DecimalFormat df=new DecimalFormat("0.000");

    在这里我定义了一个df来调用这个类。

    例子:

    public class Demo1 {
        public static void main(String[] args) {
            DecimalFormat df=new DecimalFormat("0.000");
            Scanner input=new Scanner(System.in);
            double num=158.997999;
            System.out.println(df.format(num));
        }
    }

            括号中的红色字体就是控制小数点后面的位数,我在这里设置了取小数点后的三位数(0.000小数点后三个0,你可以更改这个来达到你想获取的长度)。并且我设置了一个double类型的num值为158.997999。

            蓝色字体则数调用这个类的方法format(),参数为我们要控制的数字num,并且输出它。

           值得一提是这个方法采取的是四舍五入,也就是我们要舍去的小数点后第4位如果大于5则会先进1再舍去,譬如上面的例子的输出结果为

    大概就这些了- -,如有问题

     

     

     

     

     

     

    请自行查阅其他资料  恕在下爱莫能助OAO 

    展开全文
  • Java控制输出小数点后几位数

    千次阅读 2021-03-16 14:38:43
    import java.text.DecimalFormat; public class test { public static void main(String[] args) { DecimalFormat df = new DecimalFormat("#.000"); // float a = 12.3456789f; float 也可以 double a = 12...
    import java.text.DecimalFormat;
    
    public class test {
    
    	public static void main(String[] args) {
    		DecimalFormat df = new DecimalFormat("#.000");
    //		float a = 12.3456789f;   float 也可以
    		double a = 12.3456789;
    		
    		System.out.println(df.format(a));  // 输出的是数字
    //		 System.out.println("%.4f", a);  会报错
    		System.out.printf("%.4f", a);  // c 语言中的输出格式
    		System.out.println();
    		System.out.println(String.format("%.5f", a));  // 输出的是字符串
    	}
    }
    
    
    

    在这里插入图片描述

    展开全文
  • java 小数位数控制

    千次阅读 2022-04-08 13:57:17
    利用此类的format方法,可以发现结果为进行四舍五入的结果 DecimalFormat df = new DecimalFormat("#.##"); System.out.println(df.format(12.655));//12.65 System.out.println(df.format(12.658));//12.66 ...

    通过DecimalFormat类的format方法

    利用此类的format方法,可以发现结果为进行四舍五入后的结果

     		DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(df.format(12.655));//12.65
            System.out.println(df.format(12.658));//12.66
    

    通过String类的format方法和System类的printf方法

    可以发现这两种方法,都是进行四舍五入后的结果

    		System.out.println(String.format("%.1f", 12.665));//12.7
            System.out.println(String.format("%.1f", 12.635));//12.6
            System.out.printf("%.2f", 12.698);//12.70
            System.out.printf("%.2f", 12.694);//12.69
    

    常用Math类取舍方法

    round方法利用四舍五入,结果为一个整数
    floor为向下取整
    ceil为向上取整

    		System.out.println(Math.round(12.658));//四舍五入13
            System.out.println(Math.floor(12.886));//向下取整12.0
            System.out.println(Math.ceil(12.015));//向上取整13.0
    

    运行实例

    在这里插入图片描述

    System.out.println("控制小数的位数:");
            DecimalFormat df = new DecimalFormat("#.##");
            System.out.println(df.format(12.655));//12.65
            System.out.println(df.format(12.658));//12.66
            System.out.println(String.format("%.1f", 12.665));//12.7
            System.out.println(String.format("%.1f", 12.635));//12.6
            System.out.printf("%.2f", 12.698);//12.70四舍五入
            System.out.printf("\n%.2f", 12.694);//12.69
            System.out.println("\n小数的处理");
            System.out.println(Math.round(12.658));//四舍五入13
            System.out.println(Math.floor(12.886));//向下取整12.0
            System.out.println(Math.ceil(12.015));//向上取整13.0
    
    展开全文
  • 一、返回 String 类型数据对数据进行处理,返回 String 类型数据,可以通过如下方式...- 小数点后位数不足的,补0- 四舍五入,对数据截断Double d = 123.451789D;DecimalFormat decimalFormat = new DecimalForma...
  • 有时候我们在项目中,需要对double小数进行处理,统一保留几位小数...我们统一保留两位小数,并四舍五入案例:import java.text.DecimalFormat;public class Test1 { public static void main(String[] args) { De...
  • Java限制小数位数的方法不止一种,下面我们以限制两位小数为例来说明几种限制小数位数的方法,其他位数可以以此类推方式一:四舍五入double f = 111231.5585;BigDecimal b = new BigDecimal(f);double f1 = b....
  • JAVA中float小数点后边的位数如何和控制源码奉上packagecom.mtqj.quotes.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.util.ArrayList;importcom.mtqj....
  • Java中设置double类型小数点格式问题。
  • 只要有第三位就清除 <input type=text onkeyup=value=value.replace(/\.\d{2,}$/,value.substr(value.indexOf('.'),3)) /> jquery validate 验证: jQuery.validator.addMethod...//验证小数点后位数  jQu
  • 给小数添加位数限制 这里提供有三种写法 下面以保留两位小数点为例 1,保留两位小数用 DecimalFormat的format方法(四舍五入) DecimalFormat df = new DecimalFormat("#.00"); Double a = 6.23689 System.out....
  • java double类型的小数点后位数设置

    万次阅读 2019-02-24 11:21:40
    在一些编程过程中,有时会对小数点后的个数有要求,比如:最终输出的数字保留一位小数,此时有以下几种方案: 方案一: 直接输出 示例: public class 位数控制 { public static void main(String[] args) { //保留...
  • Java限制小数位数问题在Java限制小数位数的方法不止一种,下面我们以限制两位小数为例来说明几种限制小数位数的方法,其他位数可以以此类推。方式一:四舍五入double f = 111231.5585;BigDecimal b = new ...
  • 用Math.round() 将数乘以100四舍五入,再除以100.0 注:java中Math.round()是四舍五入取整,并不能设置保留几位小数。 import java.math.BigDecimal; public class Test { public static void main(String[] args)...
  • java小数位数输出的限制

    千次阅读 2021-06-15 17:42:57
    //第一种 利用java中提供的DecimalFormat类,以下是我搜索到的用法 //第二种 System.out.println("%6.4f\n",BMI); //第三种 System.out.println(String.format("%.1f",flt_3));
  • var reg = /^-?\d{1,16}(?:\.\d{1,2})?$/;//小数点左边最高16位,小数点右边最多2位
  • //输入内容 private String mAfterText; private static final java.lang.String TAG = PriceTextWatcher.class.getSimpleName(); //输入框 private EditText mEditText; //匹配器 private...
  • 背景:在做接口开发时,遇到一个需求是将...首先,想到的是#java限制小数点位数#,查到了以下的解决方案: Double dev=1.2999; DecimalFormat df = new DecimalFormat("#.00");// 保留五位小数非四舍五入型 ...
  • 1、当前方式是保留两位小数点,并且四舍五入 BigDecimal b = new BigDecimal(546542.1214); double discount = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 2、当前方式是直接保留两位小数点 ...
  • 传递到前端的数字, 小数点后位数一般要限制在六个以内,否则会导致出现十多位乱七八糟的数字,最近研究了下,经过尝试找到了这种方法,分享给粉丝们 这里以小数点后位数3位为例: @Bean public SimpleModule ...
  • 语法://返回小数点后位数BigDecimal.setScale();//setScalelen参数指定小数点后位数BigDecimal.setScale(len);PS:setScale(1)表示保留一位小数,默认用四舍五入方式setScale(1,BigDecimal.ROUND_DOWN)直接删除多余...
  • 共回答了20个问题采纳率:85%import java.util.*;class AddBigNumber{public static StringBuffer Mul(StringBuffer s1,StringBuffer s2){StringBuffer sb=new StringBuffer();for(int i=0;i=0;i--){for(int j=s2....
  • Java中控制小数位数

    2021-02-13 02:17:44
    方法一:使用BigDecimalpublic class BigDecimalDemo {public static void main(String[] args) {BigDecimal decimal = new BigDecimal(Math.PI);decimal = decimal.setScale(10, BigDecimal.ROUND_HALF_EVEN);...
  • //设置小数位数,"0.000" 就是保留三位小数 String y = df.format(x);//返回数据为 String 类型,结果为四舍五入的值 System.out.println(y); 结果如下: 方法2:类似C的写法 double x = 89.4545464654; String ...
  • 很早以前就比较疑惑Java怎么保留小数点后两位(或者n位),看了CSDN很多篇博客越看越头疼。为啥那么多方法到最后都是字符串累心呢?我只需要保留小数点后几位,没让你给我转成字符串呀。按照那些方法,最后还是要...
  • 三个方法都可以 如下:(一):这种方法方便,我就使用这种方法float...(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)(二):这个方法也简单,不过还要再转成float型:import java.text.DecimalFormat;...
  • NumberFormat和DecimalFormat NumberFormat是Format类的子类,用于国际化格式输出,...对于小数点后位数控制的用法。   NumberFormat public static void main(String[] arg){  double a = 2222.345;  //int b

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,574
精华内容 2,629
关键字:

java限制小数点后位数

java 订阅