摆脱带符号的零

par*_*rth 2 c++ floating-point

我正在做一些矩阵运算,其中矩阵元素通过以下方式从某些变量获取值:

elem[1] = -x
Run Code Online (Sandbox Code Playgroud)

但当它在矩阵中x = 0设置时,这是不希望的。-0有什么明确的方法可以防止这种情况发生吗?

Mur*_*los 5

您可以执行以下操作:

elem[i] = -x + 0.0;
Run Code Online (Sandbox Code Playgroud)

我测试了以下代码:

float a = -0.0; 
printf("%f %f\n", a, a + 0.0);
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

-0.000000 0.000000
Run Code Online (Sandbox Code Playgroud)