相关疑难解决方法(0)

比较浮点值有多危险?

我知道因UIKit使用CGFloat分辨率独立坐标系而使用.

但我想,以检查是否例如每次frame.origin.x0它让我感到恶心:

if (theView.frame.origin.x == 0) {
    // do important operation
}
Run Code Online (Sandbox Code Playgroud)

是不是CGFloat有比较时容易误报==,<=,>=,<,>?这是一个浮点,他们有不寻常的问题:0.0000000000041例如.

Objective-C在比较时是在内部处理这个,还是可能发生origin.x读取为零的情况并不是0真实的?

c floating-point objective-c floating-accuracy ios

381
推荐指数
6
解决办法
9万
查看次数

迭代时浮点数不精确

我有一个函数,根据范围内的值计算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;
}
Run Code Online (Sandbox Code Playgroud)

如何使用此功能计算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);
}
Run Code Online (Sandbox Code Playgroud)

c floating-point floating-accuracy

3
推荐指数
1
解决办法
238
查看次数

标签 统计

c ×2

floating-accuracy ×2

floating-point ×2

ios ×1

objective-c ×1