我正在尝试绘制基于时间的图纸。例如:定义一个点以备后用。
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是两倍。