当前位置: 首页 > 知识库问答 >
问题:

双倍除以零:为什么结果不一致?

夏侯弘量
2023-03-14

为什么结果是:

double a = 0.0/0.0;
double b = 0/0.0;

=NaN

double e = 0.1/0.0;
double e = 12.0/0.0;
double f = 1.0/0.0;

=无穷大

我知道doublefloat除法有一点不同。我对得到的NaN非常满意,因为当某物除以零时,结果并不是定义的。但是为什么他们定义大于零除以零的结果是不独立呢?这和他们用来执行浮点除法的方法有关系吗?

共有1个答案

凌博实
2023-03-14

还有其他答案指定这是在标准中,因此是“预期的”行为。你似乎想知道为什么标准是那样的。我猜原因是有些表达式有定义良好的极限(如微积分中的极限),有些甚至没有极限。有一个定义好的极限的,得到一个带符号的无穷大(因为那是极限)。像0/0这样的是NaN,因为那里没有限制。(从左边算起的极限为负无穷大,从右边算起的极限为正无穷大。)在所有情况下,当我说“极限”时,我指的是n/x的极限为x->0,其中n是固定分子。

 类似资料:
  • 问题内容: 为什么这段代码没有抛出?看一看: 我不知道! 问题答案: 您为什么不能自己检查一下并抛出异常(如果您要的话)。

  • 我在做一个Android计算器,除以零得到9.223372e+18。为什么不显示NaN或Crash?我认为它的结果是9.223372e+18,因为这是可能的最大的double值,因为我使用了double数据类型除以零。既然这会让用户感到困惑,我该如何绕过这个问题呢? 嗨,伙计们,谢谢你们的回复。我很感激。我在下面发布了我的代码。

  • 下面的语句抛出。 因为文字被认为是一个文字,所以在整数算术中不允许除以零。 下面的语句无一例外地生成(不是数字)。 在这种情况下,两个操作数都被认为是double的。 同样,下面的语句也不会抛出任何异常。 它们会产生以下输出。 它们都返回为什么浮点或双精度数字允许此操作(除以零)? 顺便说一句,我可以理解浮点数(双精度数)的值代表正无穷大,负无穷大,而不是一个数字()……

  • 各位程序员大家好, 我目前正在为我的研究编写一个小型图形应用程序,该应用程序将在一个小型2D游戏中展示AI。我现在有点困了。我制作了一个类层次结构,在顶部有实体,基本上代表任何实体,如玩家、敌人和障碍物,它有一个节点属性,以图形方式表示实体。实体还具有两个受保护的SimpleIntegerProperty对象x和y,我将节点属性的布局属性绑定到它们,因此每当我更改x和y的值时,图形表示也会移动。

  • 为什么这段代码不抛出?看一看: 我不知道!

  • 问题内容: 为什么下面的Java代码 打印’Infinity’且未定义。这在数学上不是错吗? 问题答案: 在数学中,有许多支持算术的不同结构。最突出的数字(例如自然数,整数和实数)不包括无穷大。在那些系统中,不支持除以零。 其他系统的确包含至少一个无穷大。参见,例如,真实的投影线。它确实允许被零除。 只有一种方法可以知道在特定系统中数学定义或未定义的内容-研究该系统。 类似地,操作是可交换的(a