【问题标题】:Objective-C problems performing math on an integer对整数执行数学运算的 Objective-C 问题
【发布时间】:2011-05-02 01:40:56
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c floating-point integer


    【解决方案1】:

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

    所以1/36000

    一个整数除以别的东西是别的东西

    所以1/3600.00.00027777777

    【讨论】:

      【解决方案2】:

      因为您使用的是integer division,尽管您将其打印为浮点数,但它不会计算小数部分。

      如果你想看到部分结果,你应该把它除以3600.0..

      【讨论】:

      • 谢谢大家!我来自 PHP 的土地,所有这些东西都是神奇地完成的。很难理解这些事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多