C++双

2016-06-09 50 views
1

精度我有类似C++双

double d1=4.0; 
double d2=8.0; 

我试图打印使用cout这些双值之和。 是否可以在不设定精度的情况下以精确的精度打印总和?

如果值

double d1=4.23; 
double d2=4.0; 

总和应打印8.23没有任何额外的零。

+0

这应该有所帮助:http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with-full-precision-using-cout – nephtes

+0

@nephtes OP表示_without设置precesion_ –

+0

最近有很多问题想用精确的表示法来确定结果。 – Hurkyl

回答

2

本机浮点值不能以这种方式工作。

只要你设置一个double

double d1=4.23; 

然后就是d被设置为实际值,大约,4.2300000000000004263256

这种情况发生了蝙蝠的权利。不要通过Go。不要收200美元。即使在您计算总和之前,为时已晚,因为4.23不是基数2浮点表示中的可表示数。

要达到精确的非整数数学的唯一方法是使用专门为此目的设计的库,如GMPmpq_t有理数。

+0

@FirstStep - 感谢您指出我的错字;我实际上跑了一个快速测试,而不是自己计算这个,并且发现了所有东西......但是基本点仍然是正确的。 –