1
精度我有类似C++双
double d1=4.0;
double d2=8.0;
我试图打印使用cout
这些双值之和。 是否可以在不设定精度的情况下以精确的精度打印总和?
如果值
double d1=4.23;
double d2=4.0;
总和应打印8.23
没有任何额外的零。
精度我有类似C++双
double d1=4.0;
double d2=8.0;
我试图打印使用cout
这些双值之和。 是否可以在不设定精度的情况下以精确的精度打印总和?
如果值
double d1=4.23;
double d2=4.0;
总和应打印8.23
没有任何额外的零。
本机浮点值不能以这种方式工作。
只要你设置一个double
:
double d1=4.23;
然后就是d
被设置为实际值,大约,4.2300000000000004263256
这种情况发生了蝙蝠的权利。不要通过Go。不要收200美元。即使在您计算总和之前,为时已晚,因为4.23不是基数2浮点表示中的可表示数。
要达到精确的非整数数学的唯一方法是使用专门为此目的设计的库,如GMP的mpq_t
有理数。
@FirstStep - 感谢您指出我的错字;我实际上跑了一个快速测试,而不是自己计算这个,并且发现了所有东西......但是基本点仍然是正确的。 –
这应该有所帮助:http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with-full-precision-using-cout – nephtes
@nephtes OP表示_without设置precesion_ –
最近有很多问题想用精确的表示法来确定结果。 – Hurkyl