微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过数字(浮点数)并使用int分别获取每个数字. 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.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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐