繁体   English   中英

浮点加法行为-CPP

[英]Floating Point Addition Behavior - CPP

我对浮点加法有一个疑问-我知道错误很容易发生,但这让我很困惑。 在我的代码中,我计算了3个浮点值-z1,z2和z3。 它们是用于z缓冲的插值z值。

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

                    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;

对于上下文,这是生成的打印语句。

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

我不确定为什么打印z值的方式是正确的,或者我可能无法正确地将这些值加在一起。 任何帮助/指导将不胜感激。

最后一行显示两件事: z的值(1)和cout对象的地址(0xa45504)。 也许您的意思是endl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM