乘法/除法浮点数会产生双倍?

时间:2013-10-30 16:19:00

标签: casting floating-point double nstimeinterval cgfloat

在Objective-C(或C)中,如果我这样做

CGFloat distance = 215;
CGFloat velocity = 20;
NSTimeInterval time = distance / velocity;

是正确的吗?或者,我应该将distancevelocity投射到NSTimeInterval吗?

注意,在iOS 7.0中:

#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
#else
# define CGFLOAT_TYPE float
#endif

typedef CGFLOAT_TYPE CGFloat;

typedef double NSTimeInterval;

1 个答案:

答案 0 :(得分:3)

此代码将除以两个值并生成舍入为CGFloat的数学商。然后它会将CGFloat转换为NSTimeInterval(不会更改该值)并将其存储在time中。

如果CGFloat结果足以满足您的需求(即使它是float),那么代码就可以了。如果不是,那么您应该将其中一个操作数转换为NSTimeInterval,这将导致商被舍入为NSTimeInterval而不是CGFloat

如果NSTimeInterval结果不够准确,那么您需要替代代码。