在Objective-C(或C)中,如果我这样做
CGFloat distance = 215;
CGFloat velocity = 20;
NSTimeInterval time = distance / velocity;
是正确的吗?或者,我应该将distance
或velocity
投射到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;
答案 0 :(得分:3)
此代码将除以两个值并生成舍入为CGFloat
的数学商。然后它会将CGFloat
转换为NSTimeInterval
(不会更改该值)并将其存储在time
中。
如果CGFloat
结果足以满足您的需求(即使它是float
),那么代码就可以了。如果不是,那么您应该将其中一个操作数转换为NSTimeInterval
,这将导致商被舍入为NSTimeInterval
而不是CGFloat
。
如果NSTimeInterval
结果不够准确,那么您需要替代代码。