gpt4 book ai didi

java - 为什么表达式 (double.MinValue < double.MinValue + 1) 返回 false?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:53 26 4
gpt4 key购买 nike

考虑下面的 C# 代码:

public class Program
{
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine(double.MinValue < double.MinValue + 1);
Console.WriteLine(int.MinValue < int.MinValue + 1);
}
}

输出将是:

False
True

我知道

Console.WriteLine(double.MinValue + 1);
Console.WriteLine(double.MinValue);

将打印相同的 -1,79769313486232E+308 值。

我的问题是:为什么会发生这种“意外”和奇怪的行为?我希望第一行也返回 true

例如,下面的 Java 程序返回预期的 true:

public class MyClass {
public static void main(String args[]) {
System.out.println(Double.MIN_VALUE < Double.MIN_VALUE + 1);
}
}

为什么会有这种不同的行为?

最佳答案

这两个最小值是不同的。

在 Java 中,MIN_VALUE 是最小的 double 值的名称。在 C# 中,MinValue 是小于所有其他有限值的 double 值的名称;在 Java 中,该值将是 -Double.MAX_VALUE

而且该值非常负,以致于将 1 添加到它会在四舍五入中丢失。 double 没有足够的精度来表示 MinValueMinValue+1 不同。它大致是 -1800000....00,其中有 307 个零。 double 只能粗略地表示 17 位十进制数字的精度。所以加一会在四舍五入中丢失。

关于java - 为什么表达式 (double.MinValue < double.MinValue + 1) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46330814/

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