我有一些“参考”浮点数(例如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/