【发布时间】:2012-08-13 04:55:11
【问题描述】:
我经常需要将CGFloat 设置为int,以计算数组索引。
我一直认为floorf(theCGFloat) 或ceilf(theCGFloat) 存在的问题是浮点数不准确可能存在问题。
如果我的CGFloat 是2.0f 但在内部它表示为1.999999999999f 或类似的东西怎么办。我做floorf 并得到1.0f,这又是一个浮点数。但是我必须将这个野兽转换为 int,这可能会引入另一个问题。
是否有最佳实践如何将float 设置为int,这样2.0 之类的东西永远不会意外地设置为1,而2.0 之类的东西永远不会意外地设置为2?
【问题讨论】:
-
在提供描述输入值错误以及返回值过高或过低的后果的规范之前,无法正确回答此问题。在返回一个太高的值(因为先前的舍入误差使该值太高)和返回一个太低的值(因为该值被人为地调整以补偿先前的错误)之间存在权衡,反之亦然。没有上下文的解释,就没有一个正确的答案。
标签: ios math floating-point floating-accuracy floating-point-precision