Math.max 似乎返回了错误的答案

发布于 2024-09-19 15:34:25 字数 311 浏览 3 评论 0原文

我有一个双精度值列表,我不知道其范围,但我想找到最大值。然而,Math.max 函数对此示例代码给出了一个奇怪的结果:

double a = -100.0;
double maxA = Double.MIN_VALUE;
maxA = Math.max(maxA, a);
System.out.println(maxA);

输出为:

4.9E-324

因此,出于某种原因,与 -100.0 相比,Double.MIN_VALUE 被视为最大值。

为什么?

I have a list of double values that I don't know the range of and I want to find the maximum value. However, the Math.max function is giving a curious result for this sample code:

double a = -100.0;
double maxA = Double.MIN_VALUE;
maxA = Math.max(maxA, a);
System.out.println(maxA);

And the output is:

4.9E-324

So for some reason, Double.MIN_VALUE is being considered the max when compared to -100.0.

Why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

残月升风 2024-09-26 15:34:27

很明显 -100 小于 4.9E-324

-100 , -99 ..... -1 , 0 , 4.9E-324 , 1 , 2 , 3......

Its pretty obvious -100 is less than 4.9E-324

-100 , -99 ..... -1 , 0 , 4.9E-324 , 1 , 2 , 3......
葮薆情 2024-09-26 15:34:27

MIN_VALUE 一个常量,保存 double 类型的最小正非零值。

注意“正”值。

您正在将其与负值进行比较,即 1 > > -1。

MIN_VALUE A constant holding the smallest positive nonzero value of type double.

Note "positive" value.

You are comparing it with a negative value is 1 > -1.

笔落惊风雨 2024-09-26 15:34:26

MIN_VALUE 是:

一个常量,保存双精度类型的最小正非零值 2^(-1074)。

不是最负可能的值。

MIN_VALUE is:

A constant holding the smallest positive nonzero value of type double, 2^(-1074).

Not the most negative possible value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文