私は時間ベースの絵を作ろうとしています。例: 後で使用するポイントを定義します。
CGPoint testPoint = CGPointMake(2341.2345, 1350046324.1234);
次に、testPoint.y は 1350046336.00 になり、そこには配置されません。Xcode 4.5 を使用しています。何か案は?ありがとう。
私は時間ベースの絵を作ろうとしています。例: 後で使用するポイントを定義します。
CGPoint testPoint = CGPointMake(2341.2345, 1350046324.1234);
次に、testPoint.y は 1350046336.00 になり、そこには配置されません。Xcode 4.5 を使用しています。何か案は?ありがとう。
CGPoint
で定義されていCGGeometry.h
ます:
struct CGPoint {
CGFloat x;
CGFloat y;
};
32 ビット システムCGFloat
ではtypedef
tofloat
です。iPhone/iPad は 32 ビットシステムです。最後の情報 - C のfloat
数値 (Objective C は C の厳密なスーパーセットです):
C の浮動小数点数は、IEEE 754 エンコーディングを使用します。このエンコーディングのため、値が変更されないことを保証することはできません。
ここで議論全体を読むことができます: float vs. double precision
CGPointはfloat(32ビット)データ型を使用します(少なくともiOS6では)。
ヘッダーから:
CGPointMake(CGFloat x, CGFloat y) ...
と
typedef CGFLOAT_TYPE CGFloat;
と
# define CGFLOAT_TYPE float
したがって、これは私のテストコードになります:
CGPoint testPoint1 = CGPointMake(2341.2345, 1350046324.1234);
CGPoint testPoint2 = CGPointMake(2341.2345f, 1350046324.1234f);
double d = 1350046324.1234;
float f = 1350046324.1234;
NSLog(@"%f %f %f %f", testPoint1.y, testPoint2.y, d, f);
ログへの印刷:
1350046336.000000 1350046336.000000 1350046324.123400 1350046336.000000
したがって、単精度浮動小数点数で十分な数値の範囲を残しました。それで全部です。
ところで:私はあなたの質問に出くわす前にCGFloatが2倍だと思いました。
あなたが書く場合:
CGPoint testPoint = CGPointMake(2341.2345f, 1350046324.1234f);
それは良いですか?