为什么我在不同的设备中获得不同的 CGFloat 值

why I am getting different CGFloat value in different devices

提问人:Giresh 提问时间:4/27/2016 最后编辑:Giresh 更新时间:5/20/2016 访问量:121

问:

嗨,我的 CGFloat 值根据设备显示不同的值。

我正在使用 iPhone 的 cocos2d 游戏

我正在尝试打印 dt

在iPhone 5中,它显示0.0166666675

但在iPhone 6中,它显示5.0176358830256065E-315

我正在使用这段代码

-(void)update:(CGFloat)dt {
static CGFloat time = 0;
time += dt;
 if (time >= 3) {
    [self unscheduleUpdate];
    time = 0;
    if ([self getChildByTag:999].visible)
    {
        [self hideGuide];
    }
} }
iOS版 Cocos2D-X-3.0

评论

0赞 luk2302 4/27/2016
代码中显示了多个值 - 哪一个让您感到困惑?CGFloat
0赞 Ketan Parmar 4/27/2016
你打印了什么结果?是结果吗?或?这个参数是什么?它与设备时间或日期有关吗?timedtdt
0赞 Giresh 4/27/2016
我打印了dt值
1赞 luk2302 4/27/2016
它是每次打印该值还是只打印一次?请注意,它的值非常接近 。@Lion 是增量时间,即自上次调用方法以来经过的时间。0dtupdate
0赞 YvesLeBorg 4/27/2016
我假设这是一个真实的设备(又名不是模拟器)并且您使用 NSLog(不是 Xcode 的调试值)?print

答:

0赞 Hayk Petrosyan 5/20/2016 #1

你得到了不同的结果,因为 32 位和 64 位设备的 CGFloat 值不同,

typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit

我认为这会对你有所帮助