我有类似
的东西double d1=4.0;
double d2=8.0;
我正在尝试使用cout
打印这些双精度值的总和。
是否可以在不设置精度的情况下以精确的精度打印总和?
如果值为
double d1=4.23;
double d2=4.0;
总和应打印8.23
,不得添加任何零。
答案 0 :(得分:3)
本机浮动值不能以这种方式工作。
一旦设置double d1=4.23;
:
d
然后mpq_t
设置的实际值约为4.2300000000000004263256
这种情况发生了。不要过去Go。不要收200美元。即使在计算总和之前,也为时已晚,因为4.23在基数2浮点表示中不是可表示的数字。
实现精确非精确非整数数学的唯一方法是使用专门为此目的设计的库,例如GMP' distance*speed > 5
有理数。