我有一些“参考”浮点数(例如1.5、3和7.1),有什么办法如何使其他一些“随机”浮点数四舍五入到最接近括号的数字? (我的意思是,如果有诸如舍入之类的东西,可以取舍入参考值)

还是有什么方法可以使一些数字从2舍入到更接近的一个(当然,除了人工决定之外)?

我没有在Math中找到任何方法,也许是一些外部库?
还是为此编写自己的方法(从括号中获得每个值的绝对差并获得最小的值)是更好的主意?
我知道这很平庸,但这可能有用。

感谢您的任何回复

编辑-
例如。:
如果我想


“回合” 1,得到1.5
第五回合
第八回合获得7.7
约1.7,得到1.5


等等

最佳答案

最佳答案:

“为我”方式,更易于阅读

private static double roundForI(double toRound, double[] numbers) {
    int minIndex = 0;
    double minDiff = Double.MAX_VALUE;
    double diff;
    for (int i=0; i<numbers.length; ++i) {
        diff = Math.abs(numbers[i]-toRound);
        if (diff < minDiff) {
            minDiff = diff;
            minIndex = i;
        }
    }
    return numbers[minIndex];
}


较短的一种,“针对每种”方式

private static double roundForEach(double toRound, double[] numbers) {
    double diff, roundValue = 0, minDiff = Double.MAX_VALUE;
    for (double dob : numbers) {
        if ((diff = Math.abs(dob-toRound)) < minDiff) {
            minDiff = diff;
            roundValue = dob;
        }
    }
    return roundValue;
}


和“ Java8高尔夫风格”方式,这并不比上面的2种方式更好。

private static double roundLambda(double n, double[] a) {
    double[] r = {0}, d = {Double.MAX_VALUE};
    Arrays.stream(a).filter((i)->Math.abs(i-n)<d[0]).forEach(i->{d[0]=Math.abs(i-n);r[0]=i;});
    return r[0];
}

关于java - 圆形浮球接近(或接近),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33873469/

10-12 04:45