Укажите точность с плавающей точкой в ​​GDB - PullRequest
0 голосов
/ 19 сентября 2018

Я отлаживаю приложение C ++, и когда я отображаю число с плавающей запятой двойной точности в GDB, я получаю результат вроде: .035449094393

Как отобразить больше десятичных знаков?В идеале я мог бы уточнить точность и получить такой результат: .0354490943927692

По сути, я пытаюсь найти причину очень незначительной разницы между двумя переменными.Если я использую printf с указателем формата, таким как %1.20f, я вижу разницу в переменных, но не использую GDB.

Ответы [ 2 ]

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

По умолчанию, p/f <variable> GDB имеет ограниченную точность.

Вы можете использовать printf, чтобы показать больше десятичных знаков:

(gdb) printf "%1.20f\n", <variable>

Однако, это очень вероятночто в этот момент вы начнете сталкиваться с ограничениями вашего типа данных (могут быть ошибки округления и другие небольшие отклонения от ожидаемого значения).

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

Вы можете сделать call printf("%.10f\n", d) в gdb, и он напечатает его в stdout в нужном формате.

...