iPhone:表达式中的整数溢出
我在 NSTimerInterval 的表达式中遇到整数溢出,它实际上是一个双精度值。
NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000;
在 iPhone 中处理计时器间隔的最佳方法是什么?
I get integer overflow in expression for NSTimerInterval, which is really a double.
NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000;
What's the best way to handle timer interval in iPhone?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这很可能是因为计算是对整数执行的,这给出了整数结果。尝试使用双精度值。
编辑:我刚刚检查过,这正是正在发生的事情。如果您将计算更改为:
NSTimeInterval paymentTermsInMilliSeconds = 30.0 * 24.0 * 60.0 * 60.0 * 1000.0;
,则代码给出的正确值是“2592000000”。否则,最终会出现溢出和“-1702967296”的结果。This is most likely caused because the calculation is being performed on integers, which is giving an integer result. Try instead to use double values.
EDIT: I just checked, and this is exactly what is happening. If you change your calculation to:
NSTimeInterval paymentTermsInMilliSeconds = 30.0 * 24.0 * 60.0 * 60.0 * 1000.0;
, then the code gives the correct value of "2592000000". Otherwise, you end up with an overflow and a result of "-1702967296".您可能指的是
NSTimeInterval
。这通常是以秒为单位的时间间隔。要使用毫秒,请使用 0.001 秒作为毫秒。You probably mean
NSTimeInterval
. This is usually a time interval in seconds. To use with milliseconds use 0.001 seconds for milliseconds.使用,
希望能解决问题。
Use,
Hope, will solve the problem.