如何在二维双精度数组中截断某些双精度数的小数位?

时间:2020-10-14 08:39:01

标签: java arrays double

我有这段代码,它为我生成了一个带有很多随机数的10x20数组。但是前5列中的值不应有任何小数位(请参见下面的示例)。我不知道该如何解决。

public class scratch {
    public static void main(String[] args) {
        double[][] values = new double[10][20];
            for (int i = 0; i < values.length; i++) {
                for (int j = 0; j < values[i].length; j++) {
                    double x = Math.random();
                    double y = Math.random();
                    if (j == 0) {
                        values[i][j] = Math.random() < 0.5 ? 0 : 1;
                    } else if (j == 1) {
                        values[i][j] = Math.floor(((Math.random() * (250000000 - 500000)) + 500000));
                    } else if (j == 2) {
                        values[i][j] = (Math.random() * (23)) + 1;
                    } else if (j == 3) {
                        values[i][j] = x < 0.25 ? 1 : x < 0.5 ? 3 : x < 0.75 ? 7 : 20; 
                    } else if (j == 4) {
                        values[i][j] = y < 0.25 ? 1 : y < 0.5 ? 3 : y < 0.75 ? 7 : 20;
                    } else {
                        values[i][j] = Math.floor(Math.random() * 100000) / 100000;  
                    }
                    System.out.print(values[i][j] + " ; ");
                }
                System.out.println();
            }
    }
}

示例:

0 ; 1688426 ; 15 ; 7 ; 3 ; 0.59743 ; 0.98284 ; ...

1 ; 69715358 ; 17 ; 20 ; 1 ; 0.78631 ; 0.75347 ; ...

1 个答案:

答案 0 :(得分:-2)

您定义了一个double[][]数组,尝试Number[][]并将前5列强制转换为整数

   public class scratch {
        public static void main(String[] args) {
            Number[][] values = new Number[10][20];
            for (int i = 0; i < values.length; i++) {
                for (int j = 0; j < values[i].length; j++) {
                    double x = Math.random();
                    double y = Math.random();
                    if (j == 0) {
                        values[i][j] = Math.random() < 0.5 ? 0 : 1;
                    } else if (j == 1) {
                        values[i][j] = (int)Math.floor(((Math.random() * (250000000 - 500000)) + 500000));
                    } else if (j == 2) {
                        values[i][j] = (int)(Math.random() * (23)) + 1;
                    } else if (j == 3) {
                        values[i][j] = x < 0.25 ? 1 : x < 0.5 ? 3 : x < 0.75 ? 7 : 20;
                    } else if (j == 4) {
                        values[i][j] = y < 0.25 ? 1 : y < 0.5 ? 3 : y < 0.75 ? 7 : 20;
                    } else {
                        values[i][j] = Math.floor(Math.random() * 100000) / 100000;
                    }
                    System.out.print(values[i][j] + " ; ");
                }
                System.out.println();
            }
        }
    }