我有一个函数可以根据 range 中的值计算 3d 中的点[0, 1]
。我面临的问题是,二进制浮点数不能完全表示 1。
在函数中计算的数学表达式能够计算 的值t=1.0
,但该值永远不会被函数接受,因为它会在计算之前检查是否为范围。
curves_error curves_bezier(curves_PointList* list, curves_Point* dest, curves_float t) {
/* ... */
if (t < 0 || t > 1)
return curves_invalid_args;
/* ... */
return curves_no_error;
}
我怎样才能用这个函数计算 3d 点t=1.0
?ELLIPSIS
前段时间我听说过一些事情,我认为与这样的问题有关,但我不确定。
谢谢
编辑:好的,对不起。由于我面临的问题,我假设浮点数不能完全代表 1。问题可能是因为我正在做这样的迭代:
for (t=0; t <= 1.0; t += 0.1) {
curves_error error = curves_bezier(points, point, t);
if (error != curves_no_error)
printf("Error with t = %f.\n", t);
else
printf("t = %f is ok.\n", t);
}