iPhone:表达式中的整数溢出

发布于 2024-11-30 08:10:56 字数 183 浏览 5 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

方圜几里 2024-12-07 08:10:56

这很可能是因为计算是对整数执行的,这给出了整数结果。尝试使用双精度值。

编辑:我刚刚检查过,这正是正在发生的事情。如果您将计算更改为: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".

溺渁∝ 2024-12-07 08:10:56

您可能指的是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.

烟酉 2024-12-07 08:10:56

使用,

NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000.0; 

希望能解决问题。

Use,

NSTimerInterval paymentTermsInMilliSeconds = 30 * 24 * 60 * 60 * 1000.0; 

Hope, will solve the problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文