1

我有一个简单的函数,它返回一个浮点数,如下所示。

float offset (int secs){
    return secs/3600;
}

给定 secs = 19800,如果我在下面使用它,我最终会得到 5 而不是 5.5。

num01.text=[NSString stringWithFormat:@"%.1f",offset(t01)]; // t01 is 19800 

我究竟做错了什么?我该怎么做才能将 num01 (标签)的字符串值设置为 5.5 ?

谢谢您的帮助。

4

2 回答 2

3

返回值在被解析为浮点数之前是一个 int。

只需将其中一个操作数转换为浮点数或使用 3600.0:

return secs/3600.0
于 2012-11-17T19:44:58.337 回答
2

问题是您的代码采用整数除法的结果并将其转换为浮点数。所以,它是这样的:

“计算以秒为单位的整数除以整数 3600 所得结果的商。将其转换为浮点数并返回结果。” 即 19,800/3600 = 5。转换为 5.0 并返回。

相反,从一开始就使用浮点数,方法是更改​​您的函数以接受浮点数或首先将您的数字转换(转换)为浮点数:

return (float)sec / 3600.0;
于 2012-11-17T19:51:25.433 回答