我的程序中有一个奇怪的行为,其中双精度失去了精度。我的cout的显示正确的值,但仍然是行为意外。因此我调试和发现甚至gdb显示意外的值。 以下仅是简化方案:gdb显示不正确的double值
double length =2.11;
//gdb shows 2.10 here but prints 2.11 correctly using cout at the end
cout<<"length; //It prints 2.11 correctly here
通常,这样的问题是很难找到生产场景中调试是不是一种选择,唯一的选择是使用尽可能多的打印成为可能。 任何建议如何避免这个问题?
错误的问题(因为你忘了激励它,实际上有一些[XY问题](http://xyproblem.info)...)。正如你所评论的那样,你不会操纵*数字*,而是一些巴洛克长度表示(因为你评论说'2.11'意思是2英尺和11英寸) –
如果你使用'double',一定要花几个小时才能读取http: //floating-point-gui.de/ –
@BasileStarynkevitch:绝对好的建议。掌握了这些知识后,你们也会在派对上喋喋不休。 – Bathsheba