gpt4 book ai didi

java - 错误排序数组中的负数(双)

转载 作者:行者123 更新时间:2023-11-29 03:25:37 26 4
gpt4 key购买 nike

在这里,我们面临着对两个数组进行排序的奇怪问题:其中的数字是显示这些数组的顶部和底部、最大值和最小值的关键,以便将它们绘制成一条线。

这是两个数组:

double[] hor = {5.938, 5.989, 6.047, 6.105, 6.159, 6.211, 6.260, 6.314, 6.351};
double[] vert = {-6.589,-6.348, -5.991, -5.691,- 5.491, -5.203, -4.989,- 4.805, -4.650};

a和函数:

public void escala(double[] hor, double[] vert) {

double minX = Double.MAX_VALUE;
double maxX = Double.MIN_VALUE;
for (double x : hor) {
if (x < minX)
minX = x;
if (x > maxX)
maxX = x;

}
double minY = Double.MAX_VALUE;
double maxY = Double.MIN_VALUE;
for (double y : vert) {
if (y < minY)
minY = y;
if (y > maxY)
maxY = y;
}

double margin=0.00;
final double actualMaxY = maxY+margin*(maxY-minY);
final double actualMinY = minY-margin*(maxY-minY);
final double actualMaxX = maxX+margin*(maxX-minX);
final double actualMinX = minX-margin*(maxX-minX);

System.err.println("actualMinY==" + actualMinY);
System.err.println("actualMaxY==" + actualMaxY);

cgraf.setLimits(actualMinX, actualMaxX, actualMinY, actualMaxY, (maxX-minX)/5, (maxY-minY)/10);
ccur.setLimits(actualMinX, actualMaxX, actualMinY, actualMaxY, (maxX-minX)/5, (maxY-minY)/10);

}

令人头疼的结果是:

  • 最大值 = 0.000(当然是 4.9E-324)
  • 最小值 = -6.589

它适用于正数数组。但是对于这个负数数组,它会崩溃。关于如何更改代码以使其能够工作的任何想法?

预期的结果是:

  • 最大值 = -4.650
  • 最小值 = -6.589

需要此函数将值发送到小程序中的图形类。

最佳答案

问题是

double maxY = Double.MIN_VALUE;

接近0,实际上是4.9E-324,相当于4.9 * Math.pow(10, -324)。这就是排序不起作用的原因。你可以试试

double maxY = -Double.MAX_VALUE;

相反。

Double.MIN_VALUE:一个常量,包含 double 类型的最小正非零值,2^(-1074)。

注意:您可能还想更改 maxX

编辑:您可能还会发现有趣的是:Double.NEGATIVE_INFINITY

关于java - 错误排序数组中的负数(双),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21224526/

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