为什么浮点数已经签名为零? [英] Why do floating-point numbers have signed zeros?

查看:196
本文介绍了为什么浮点数已经签名为零?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么双打有 -0 以及 +0 ?什么是背景和意义?

解决方案

-0 )视为 0 *******。当负数<!em>浮点数非常接近于零时,可能会导致它被认为是 0 (要清楚,我指的是来)

以数学术语:




这说明 0 和<$ c $在计算意义上,c> -0 。




下面是一些相关的资源,已经提出了。为了完整起见,我已经包括了他们:


Why do doubles have -0 as well as +0? What is the background and significance?

解决方案

-0 is (generally) treated as 0 *******. It can result when a negative floating-point number is so close to zero that it can be considered 0 (to be clear, I'm referring to arithmetic underflow, and the results of the following computations are interpreted as being exactly ±0, not just really small numbers). e.g.

System.out.println(-1 / Float.POSITIVE_INFINITY);

-0.0

If we consider the same case with a positive number, we will receive our good old 0:

System.out.println(1 / Float.POSITIVE_INFINITY);

0.0


******* Here's a case where using -0.0 results in something different than when using 0.0:

System.out.println(1 / 0.0);
System.out.println(1 / -0.0);

Infinity
-Infinity

This makes sense if we consider the function 1 / x. As x approaches 0 from the +-side, we should get positive infinity, but as it approaches from the --side, we should get negative infinity. The graph of the function should make this clear:

(source)

In math-terms:

This illustrates one significant difference between 0 and -0 in the computational sense.


Here are some relevant resources, some of which have been brought up already. I've included them for the sake of completeness:

这篇关于为什么浮点数已经签名为零?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆