零值上的一元运算符 - () - c++
我编写了这段代码来重载矩阵类上的一元运算符:
const RegMatrix RegMatrix::operator-()const{
RegMatrix result(numRow,numCol);
int i,j;
for(i=0;i<numRow;++i)
for(j=0;j<numCol;++j){
result.setElement(i,j,(-_matrix[i][j]));
}
return result;
}
当我在 Visual Studio 中使用调试器运行程序时,它向我显示,当对双精度等于零进行操作时,它会插入结果矩阵 -0.00000 。 这是一些奇怪的 VS 显示功能,还是我应该小心处理?
I wrote this code to overload the unary operator- on a matrix class:
const RegMatrix RegMatrix::operator-()const{
RegMatrix result(numRow,numCol);
int i,j;
for(i=0;i<numRow;++i)
for(j=0;j<numCol;++j){
result.setElement(i,j,(-_matrix[i][j]));
}
return result;
}
When i ran my program with debugger in visual studio, it showed me that when the operation is done on a double equals zero, it inserts the result matrix the number -0.00000.
Is it some weird VS-display feature, or is it something i should handle carefully?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
有关详细信息,请参阅签名零 wiki 页面。
For more information see Signed Zero wiki page.
使用 double (IEEE754),定义了正零和负零。
using double (IEEE754), there is defined positive and negative zero.
好吧,对于双打来说,“0.0”和“-0.0”实际上有不同的值,我认为这很有意义......
您期望什么不同的结果?
Well for doubles actually have different values for '0.0' and '-0.0' I think it makes perfect sense....
What different result did you expect?
正如 ereOn 所说,你有一个负零:
As ereOn said, you've got a negative zero:
-0和0是同一个东西,没什么好担心的。出于数学原因,浮点数可以同时具有正数和负数 0。但 -0 的解释方式与 C/C++ 算术中的 0 相同。
-0 and 0 are the same thing, and it is nothing to worry about. Floating point numbers have the capability to have both a positive and negative 0, for math reasons. But -0 is interpreted the same way as 0 in C/C++ arithmetic.