gpt4 book ai didi

java - 如何计算指数级数的百分比?

转载 作者:行者123 更新时间:2023-12-01 19:36:26 26 4
gpt4 key购买 nike

我想做的事情非常简单,但我无法弄清楚它的数学和代码。

我有一个百分比,在控制台中显示为每个渐进步骤的新数字。所以我知道每一步 1-100 的确切百分比。假设不断进行,我想要的只是显示某个指数函数上的数字:

而不是显示:

1,2,3,4,5,6,7....100

我只想显示:

1,2,4,8,15,25,40,65,90,(100)

或者类似的东西。其想法是显示最初的 Activity ,但很快就会降低垃圾邮件的百分比。

我该怎么做?我唯一能想到的就是定义一个允许打印的固定数字数组(也许这是最好的解决方案?不过,我觉得应该有一个更优雅的基于数学的解决方案)。嗯,或者可能使用指数函数/缓和曲线填充这样的数组。

添加一些有关如何获取百分比的信息:

for (int i = 0; i < batchjob.size(); i++) {
int percent = 100 * i / batchjob.size();
log.debug("Progress: {}/{} = {}%", i, batchjob.size(), percent));
}

现在我尝试了以下方法:

final Set<Integer> progressDisplay = newHashSet(1, 2, 4, 8, 15, 25, 40, 65, 90, 100);

for (int i = 0; i < batchjob.size(); i++) {
int percent = 100 * i / batchjob.size();
if (progressDisplay.contains(percent)) {
log.debug("Progress: {}/{} = {}%", i, batchjob.size(), percent));
}
}

但是,这会导致类似的结果:

1,1,1,1,1,1,1,2,2,2,2,2,2,2,4,4,4,4,4,4,4,8,8,8,8,8,8,8...etc

<小时/>

解决方案

我结合了接受的答案和固定数组。我最终决定使用一个简单的数组,因为我可以更轻松地调整数字。

final int[] progressDisplay = {1, 3, 8, 20, 50, 75, 100};
int lastMatchingIndex = 0;

for (int i = 0; i < batchjob.size(); i++) {
processBatchJob(batchjob.get(i));
int percent = 100 * i / batchjob.size();
if (progressDisplay[lastMatchingIndex] == percent) {
log.debug("Progress: {}/{} = {}%", i, batchjob.size(), percent);
lastMatchingIndex++;
}
}

最佳答案

//initial exponential function check
int baseNum = 2;
final int exponent = 3;
int check = Math.pow(baseNum, exponent);
for(int x = 1; x <= 100; x++){
if(x == check){
System.out.println(x);
baseNum++;
check = Math.pow(baseNum, exponent);
}
}

这只是一个例子;您没有提供足够的信息来获得完整的解决方案。但是,您应该能够应用这个想法:您可以应用指数函数一次,然后在迭代时检查函数的输出,如果相同,则重新应用指数函数并重复。

关于java - 如何计算指数级数的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278549/

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