加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何通过数字(浮点数)并使用int分别获取每个数字. Java的

发布时间:2020-12-15 04:35:48 所属栏目:Java 来源:网络整理
导读:有没有什么好方法可以搜索浮点数前四个数字并使用int []分别返回每个数字? 示例:float 23,51变为整数数组,array [0] = 2,array [1] = 3,array [2] = 5,last array [3] = 1 我的代码: public void printNumber(float number){ String string = String.valu
有没有什么好方法可以搜索浮点数前四个数字并使用int []分别返回每个数字?

示例:float 23,51变为整数数组,array [0] = 2,array [1] = 3,array [2] = 5,last array [3] = 1

我的代码:

public void printNumber(float number){
    String string = String.valueOf(number);
    while(!numbers.isEmpty()){
        numbers.remove(0);
    }
    for(int i = 0; i < string.length(); i++) {
        int j = Character.digit(string.charAt(i),10);
        this.number = new Number(j);
        numbers.add(this.number);
        System.out.println("digit: " + j);
    }
}

我应该提一下,Number是一个只根据构造函数的数量返回不同图片的类,当然还有数字本身.

numbers是一个ArrayList

解决方法

使用定点格式将float转换为String,然后逐个遍历其字符,并忽略小数点.

如果数字也可能是负数,则需要注意String输出中的符号:

float v = 23.51F;
DecimalFormat df = new DecimalFormat("#");
df.setMaximumFractionDigits(8);
char[] d = df.format(v).toCharArray();
int count = 0;
for (int i = 0 ; i != d.length ; i++) {
    if (Character.isDigit(d[i])) {
        count++;
    }
}
int[] res = new int[count];
int pos = 0;
for (int i = 0 ; i != d.length ; i++) {
    if (Character.isDigit(d[i])) {
        res[pos++] = Character.digit(d[i],10);
    }
}

Demo.

重要提示:请注意浮动本质上是不精确的,因此您可能会得到一个“流浪”数字或两个.例如,您的示例生成

[2 3 5 1 0 0 0 0 2 3]

最后有2和3.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读