考虑以下 C++ 代码:
double someZero = 0;
std::cout << 0 - someZero << '\n'; // prints 0
std::cout << -someZero << std::endl; // prints -0
问题出现了:负零有什么用处,是否应该防御性地避免它(即使用减法而不是在变量上加上减号)?
来自维基百科:
据称,IEEE 754 中包含有符号零使得在一些关键问题中更容易实现数值精度[1],特别是在使用复杂的初等函数进行计算时[2]。
第一个参考文献是 W. Kahan 的“Branch Cuts for Complex Elementary Functions or Much Ado About Nothing's Sign Bit”,可供下载here https://people.freebsd.org/~das/kahan86branch.pdf.
该论文的一个例子是1/(+0)
vs 1/(-0)
。在这里,零的符号产生了巨大的差异,因为第一个表达式等于+inf
第二个,-inf
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)