gpt4 book ai didi

objective-c - iOS 中 1000 和 1000.0 的区别

转载 作者:行者123 更新时间:2023-11-28 17:59:51 25 4
gpt4 key购买 nike

这里我有一个设置 NSTimer 对象的 fireDate 的代码。

-(void)TimerFired:(NSTimer*)timer{
long startTime=random()%1500+500;
[timer setFireDate:[NSDate dateWithTimeIntervalSinceNow:startTime/1000.0]];
[controller startCarFromLane:self];
}

在上面的代码中,当我编写 :startTime/1000.0 时,我会在足够长的时间后触发计时器。但是,如果我将其更改为 :startTime/1000(不带 .0),计时器的下一个 fireDate 与上面的情况不同,计时器会更频繁地触发。我知道 dateWithTimeIntervalSinceNow 方法需要一个 NSTimeInterval,它是 double 的 typedef。但是我不能把 10.0 写成 10 吗? .0 对值(value)有何影响?

最佳答案

当你简单地写 1000 时,编译器暗示一个整数类型。因此,当对两个整数进行除法时(startTime 是一个 long,1000 可能是一个 int),这将是整数除法,从而导致准确(exact)比例的下限。例如,2500/1000 将为 2。但是,当您将 1000 写为 1000.0 时,编译器会发出一个 float 。整数除以 float 得到 float ,因此 2500/1000.0 将为 2.5,如预期的那样。基本上,这就是为什么仅使用整数时间隔会更短的原因。 (换句话说,整数除法舍弃了除以除数的模)。

关于objective-c - iOS 中 1000 和 1000.0 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com