如何解决答案是-0吗?
如果我的问题不对,请忘记我。我是c ++的初学者。 我只是用C ++编写了一个简单的程序 我的代码是:
#include<iostream>
using namespace std;
int main()
{
float a,b,c;
a=0;
b=-5;
c=a/b;
cout<<c;
}
当我运行这段代码时,输出为-0。 答案可能是-0而-0不存在?
解决方法
答案是-0,而-0不存在?
您的假设是错误的。浮点数表示中确实存在-0,因此答案可以是-0。
有关参考,请参阅IEEE-754标准;有关“为什么”,请参阅Branch Cuts for Complex Elementary Functions or Much Ado About Nothing's Sign Bit。
,背后有一个简单的逻辑:
假设您要将另一个数字除以-5,例如2。
因此,如果将2除以-5,则首先将2除以5,然后将-号应用于结果。
当您使用2而不是0时,逻辑相同。因此0/5 = 0,并应用-号,使其变为-0。
P.S。正如其他人在评论中已经提到的那样,在float宇宙中为-0 does exist。
P.P.S.说“ apply-sign”是指将浮点数的第一位(也就是“ Sign bit”)设置为1。
有关float结构的更多信息,请参见here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。