1 的分数之和不完全等于 1

Sum of fractions of 1 not exactly equally 1

提问人:Squeezie 提问时间:10/26/2017 最后编辑:Squeezie 更新时间:10/26/2017 访问量:110

问:

我正在创建一个 3D 矩阵(纬度,经度,土地利用)并尝试计算每个矩阵像元的土地利用比例:

一个示例单元可以生成由以下项指定的向量:

fractions=landuse/total_number_of_landuse;

我必须对多个单元格执行此操作,当我这样做并汇总分数时,有些是 1,有些是 1.0000。This is how it looks我知道这是由于浮点“问题”造成的。

我必须将这些数据用于 C++-Modell,它也在检查总和,然后对某些单元格(总和高达 1.0000 的单元格)向我抛出错误。

我还尝试将这些计算为双倍或单倍。

知道如何使它们总和为 1 吗?

谢谢,菲利普

MATLAB 浮点 精度 分数

评论

0赞 gnovice 10/26/2017
如果它们在 1 的公差范围内,就将它们四舍五入?相关...
0赞 Squeezie 10/26/2017
@gnovice如果我在 matlab 中将总和四舍五入,当 c++ 程序对分数求和时,这并不能解决问题
0赞 gnovice 10/26/2017
我的意思是,当你在C++程序中检查它时,你可以这样做。
2赞 Luis Mendo 10/26/2017
一般来说,你不能把总和精确到。您需要将(在 C++ 程序中)与容差进行比较,也许大约 .所以,与其说你会做这样的事情,不如做这样的事情11e-15x==1abs(x-1)<=1e-15
3赞 Mark Dickinson 10/26/2017
@LuisMendo:好吧,你可以让它们正好加到1,方法是将每个分数四舍五入为整数倍(假设IEEE 754 binary64格式),然后根据需要调整四舍五入的分数以使事情正常工作,也许使用类似于最大余数的方法。但这似乎不太可能是OPs问题的正确解决方案。2^-53

答: 暂无答案