%运算符用于时间计算

时间:2009-08-02 14:52:10

标签: iphone objective-c operators

我试图根据秒数显示分钟和秒数。

我有:

float seconds = 200;

float mins = seconds / 60.0;

float sec = mins % 60.0;

[timeIndexLabel setText:[NSString stringWithFormat:@"%.2f , %.2f", mins,seconds]];

但是我得到一个错误:类型'float'和'double'到二进制'operator%'的无效操作数

我不明白为什么......有人能给我一块骨头!?

5 个答案:

答案 0 :(得分:4)

许多语言只定义%运算符来处理整数操作数。在使用%之前尝试将secondsmins投射到int(或者首先声明它们int)。您使用的常量值也需要为int(使用60而不是60.0)。

答案 1 :(得分:4)

正如其他人所指出的那样,你应该使用整数。但是,似乎没有人发现结果不正确。回过头再看看模运算,你会发现你应该做

int seconds = 200;
int mins = seconds / 60;
int sec = seconds % 60;

注意最后一行seconds % 60而不是mins % 60(将返回剩余的分钟数除以60,即每小时的分钟数,与此计算完全无关)

修改
doh,忘记了整个......:)

答案 2 :(得分:0)

请改用。至少在你的例子中,似乎它们已经足够了(它也会更快更清晰)。

此外,在这种情况下,您将获得3.3333 ...分钟,而不是预期的3分钟。如果需要使用浮点数,可以使用Math.ceil(x)。

答案 3 :(得分:0)

60.0强制转换为double 尝试:

float seconds = 200;

float mins = seconds / 60;

float sec = mins % 60;

答案 4 :(得分:0)

这样做:

float seconds = 200.5;

float mins = floor(seconds / 60.0);

float sec = seconds - mins * 60.0;