Поведение с плавающей запятой - CPP - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть вопрос, касающийся сложения с плавающей запятой. Я понимаю, что ошибки легко найти, но этот вопрос меня озадачил.В моем коде я вычисляю 3 значения с плавающей точкой - z1, z2 и z3.Они являются интерполированными значениями z для буферизации z.

Чтобы получить окончательную координату z, у меня есть float 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 такая, какая она есть, или что я могу делать неправильно, чтобы сложить эти значения вместе.Буду признателен за любую помощь / руководство.

1 Ответ

0 голосов
/ 26 сентября 2018

Последняя строка печатает две вещи: значение z (1) и адрес объекта cout (0xa45504).Возможно, вы имели в виду endl вместо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...