【发布时间】:2016-11-22 17:47:21
【问题描述】:
我很清楚0.1+0.2 != 0.3 因为精度错误。但是我需要它等于 0.3。
我的解决方案是:
- 声明一个返回正确
double的add函数。 - 在此函数中,将两个数字相加,然后四舍五入到第 13 位。
这适用于 0.49999999999999994 和 0.30000000000000004。
我将如何实现这样的舍入函数?还有其他方法吗?
【问题讨论】:
-
什么是“正确的
double”?你知道0.3并不存在,对吧? -
正确的
double在这种情况下应该是0.3的值,所以add(0.1, 0.2) == 0.3是真的。 -
为什么你认为
double能够准确地代表0.3? -
没有办法用
doubles 表示0.3,所以不,这是不可能的。您可以做的是找到另一种表示它的方式。定点、字符串表示等...
标签: c floating-point floating-accuracy