gpt4 book ai didi

java - java中如何将 double 分成整数?

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:43 25 4
gpt4 key购买 nike

好吧,我有以下问题,最好通过一个具体的例子来解释。

给定一个 double、x(例如 100.5)和一个 int y(例如 3),如何将其分成(大致相等)部分并返回包含 33、33 和 34.5 的 List。

我希望列表中除最后一个元素之外的所有元素都是整数(整数)。

当前代码:

private List<Double> splitIntoApproxEqualParts(double number, int numParts) {
List<Double> result = new ArrayList<Double>();
if (numParts <= 0) { return result; }
double qty = Math.floor(number / numParts);
for (int i = 0; i < numParts - 1; i++) {
result.add(qty);
}
result.add(qty + 1);
return result;
}

显然,这不适用于 numParts < number 的情况以及其他情况。

最优雅的方法是什么?

最佳答案

我认为您几乎有了一个完整的解决方案,为 1 部分添加一个处理程序,然后使用现有的 qty (但从最后一个条目的原始 number 中减去它)。类似这样的东西,

private static List<Double> splitIntoApproxEqualParts(double number, int numParts) {
if (numParts <= 0) {
return Collections.emptyList();
} else if (numParts == 1) {
return Arrays.asList(number);
}
List<Double> result = new ArrayList<>(numParts);
double qty = Math.floor(number / numParts);
int t = numParts - 1;
IntStream.range(0, t).forEach(x -> result.add(qty));
result.add(number - (qty * t));
return result;
}

关于java - java中如何将 double 分成整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37450029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com