浮点加法行为 - CPP

rub*_*rtz -1 c++ floating-point graphics

我有一个关于浮点加法的问题 - 我理解错误很容易得到,但这个让我难过.在我的代码中,我计算了3个浮点 - z1,z2和z3的值.它们是用于z缓冲的内插z值.

为了获得最终的z坐标,我有浮点数z = z1 + z2 + z3.当我打印z时,我意识到它总是出现在相同的数字上 - 这导致我的程序生成的图像中存在大量的z-fighting.

                    float z1 = (bry[0] * (1.0 / v1.m_pos[2]));
                    float z2 = (bry[1] * (1.0 / v2.m_pos[2]));
                    float z3 = (bry[2] * (1.0 / v3.m_pos[2]));

                    cout << "z1 is " << z1 << endl;
                    cout << "z2 is " << z2 << endl;
                    cout << "z3 is " << z3 << endl;

                    float z = z1 + z2 + z3;
                    cout << " z computed to  be " << z << cout;
Run Code Online (Sandbox Code Playgroud)

对于上下文,这里是结果打印语句.

z1 is 0.59306
z2 is 0.156332
z3 is 0.250608
z computed to  be 10xa45504

z1 is 0.700896
z2 is 0.0484997
z3 is 0.250605
z computed to  be 10xa45504
Run Code Online (Sandbox Code Playgroud)

我不确定为什么z值的打印是这样的,或者我可能错误地将这些值添加到一起.任何帮助/指导将不胜感激.

120*_*arm 8

最后一行是打印两件事:z(1)的值和cout对象的地址(0xa45504).也许你的意思是endl