代码之家  ›  专栏  ›  技术社区  ›  Mark Steudel

对整数执行数学运算的目标C问题

  •  0
  • Mark Steudel  · 技术社区  · 14 年前

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

    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
    

    我想知道为什么过去的时间没有更新?

    所用秒的方法:

    - (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;
    }
    

    你们还有什么需要看的吗?

    蒂亚

    2 回复  |  直到 12 年前
        1
  •  4
  •   Jack    14 年前

    因为你在使用 integer division 它不计算小数部分,尽管您随后将其打印为浮点。

    你应该把它除以 3600.0 如果要查看部分结果…

        2
  •  0
  •   Dave DeLong    14 年前

    整数除以整数就是整数。

    所以 1/3600 0 .

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

    所以 1/3600.0 0.00027777777