gpt4 book ai didi

java - 四舍五入到一个小数位不起作用。

转载 作者:行者123 更新时间:2023-11-29 05:07:06 25 4
gpt4 key购买 nike

首先,我想指出,我知道这是一个涉及很多的主题,但在查看其他问题并尝试了大约一个小时后,我仍然无法解决这个问题。

我正在通过 Performances 对给定数字时间的 0.1 以内的数字执行二进制搜索。但是,我需要将最小/最大目标和我们搜索的数字(平均值)四舍五入到小数点后一位。该方法假定性能按升序排序。

        public static int binarySearch(Performance[] performances, double time) {


if (performances == null){
return -1;
}



int first = 0;
int last = performances.length - 1;
double targetMax = time + 0.1;
double targetMin = time - 0.1;
targetMax = Math.round((targetMax * 100)) / 100.0;
targetMin = Math.round((targetMin * 100)) / 100.0;


while (first <= last){
int mid = (first + last)/2;
double average = performances[mid].averageTime();
average = Math.round((average * 100)) / 100.0;

if ((targetMax > average) && (targetMin < average) ){
return mid;
}
else if(average < targetMin){

last = mid -1;

}

else {
first = mid + 1;
}


}

return -1;

}

这就是它变得奇怪的地方。我所做的舍入似乎适用于 targetMax 和 targetMin,9.299999999 舍入到 9.3,但是当从 9.3333333333 向下舍入平均值时,它返回 9.33

我真的被这个问题难住了,我不是对两个变量做了完全相同的事情吗?

这个网站是新手,所以请原谅我遗漏的任何内容,请询问并编辑它。尽我所能! :)

最佳答案

您将两者四舍五入到小数点后 两位 - 只是 9.2999999 四舍五入为 9.30。

将您的 100 更改为 10 以在每种情况下四舍五入到一位小数。

关于java - 四舍五入到一个小数位不起作用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011244/

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