我正在尝试绘制基于时间的图纸。例如:定义一个点以备后用。

CGPoint testPoint = CGPointMake(2341.2345, 1350046324.1234);

然后testPoint.y变成1350046336.00,这不是我们放置的位置。
我正在使用Xcode 4.5。
有任何想法吗?谢谢。

最佳答案

CGPoint使用浮点(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是两倍。

07-26 09:42