Math.max 似乎返回了错误的答案
我有一个双精度值列表,我不知道其范围,但我想找到最大值。然而,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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
很明显 -100 小于 4.9E-324
Its pretty obvious -100 is less than 4.9E-324
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.
MIN_VALUE 是:
不是最负可能的值。
MIN_VALUE is:
Not the most negative possible value.