对整数执行数学运算的 Objective-C 问题

发布于 2024-09-29 19:20:57 字数 788 浏览 4 评论 0原文

我有以下在计时器上运行的代码行:

NSLog( @" seconds: %i, elapsedhours %f", [self elapsedSeconds], [self elapsedSeconds] / 3600);

它打印出:

seconds: 0, elapsedhours 0.000000
seconds: 1, elapsedhours 0.000000
seconds: 2, elapsedhours 0.000000
seconds: 3, elapsedhours 0.000000

我想知道为什么经过的时间不更新?

elapsedSeconds 方法:

- (NSUInteger)elapsedSeconds;
{
    NSUInteger seconds = 0;
    if( ![self endDate] ) {
        seconds = [[NSDate date] timeIntervalSinceDate: [self startDate]];
        NSLog( @" startdate = %@ no end date %i", startDate, seconds );
    }
    else {
        seconds = [[self endDate] timeIntervalSinceDate: [self startDate]];
    }

    return seconds;
}

你们还需要看什么吗?

TIA

I have the following line of code which is running on a timer:

NSLog( @" seconds: %i, elapsedhours %f", [self elapsedSeconds], [self elapsedSeconds] / 3600);

It prints out:

seconds: 0, elapsedhours 0.000000
seconds: 1, elapsedhours 0.000000
seconds: 2, elapsedhours 0.000000
seconds: 3, elapsedhours 0.000000

I'm wondering why elapsed hours doesn't update?

Method for elapsedSeconds:

- (NSUInteger)elapsedSeconds;
{
    NSUInteger seconds = 0;
    if( ![self endDate] ) {
        seconds = [[NSDate date] timeIntervalSinceDate: [self startDate]];
        NSLog( @" startdate = %@ no end date %i", startDate, seconds );
    }
    else {
        seconds = [[self endDate] timeIntervalSinceDate: [self startDate]];
    }

    return seconds;
}

Anything else you guys/gals need to see?

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

软甜啾 2024-10-06 19:20:57

因为您使用的是 整数除法,它不会计算小数部分,尽管您随后将其打印为漂浮。

如果您想查看部分结果,您应该将其除以3600.0

Because you are using integer division, which doesn't calculate decimal parts although you then print it as a float.

You should divide it by 3600.0 if you want to see partial results..

不知在何时 2024-10-06 19:20:57

一个整数除以一个整数就是一个整数。

所以 1/36000

整数除以其他值是其他值,

因此 1/3600.00.00027777777

An integer divided by an integer is an integer.

So 1/3600 is 0.

An integer divided by something else is something else

So 1/3600.0 is 0.00027777777

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