在GDB中指定浮点精度

时间:2018-09-19 11:34:26

标签: c++ floating-point gdb

我正在调试C ++应用程序,当我在GDB中显示双精度浮点数时,得到的结果如下:.035449094393

如何显示更多的小数位?理想情况下,我将能够指定精度并得到如下结果:.0354490943927692

基本上,我正在尝试找出两个变量之间存在很小差异的原因。如果我将printf与%1.20f这样的格式说明符一起使用,则可以看到变量的差异,但不使用GDB。

2 个答案:

答案 0 :(得分:4)

默认情况下,GDB的p/f <variable>的精度有限。

您可以使用printf来显示更多的小数位:

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

但是,很可能在这一点上您会遇到数据类型的局限性(可能会有舍入错误和与期望值的其他小偏差)。

答案 1 :(得分:1)

您可以在call printf("%.10f\n", d)中进行gdb,它将以所需格式在stdout中进行打印。