2013-10-30 98 views
1

在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; 
+1

提到編程語言會有所幫助。 –

+0

@DanielDaranas謝謝。我已經更新了我的問題。 – ma11hew28

回答

3

此代碼將分兩個值,併產生四捨五入爲CGFloat數學商。然後它會將CGFloat轉換爲NSTimeInterval(不會更改該值)並將其存儲在time中。

如果CGFloat結果足夠滿足您的需求(即使它是float),那麼代碼就沒問題。如果不是,則應將其中一個操作數轉換爲NSTimeInterval,這將導致商數四捨五入爲NSTimeInterval而不是CGFloat

如果NSTimeInterval結果不夠準確,那麼您需要其他代碼。