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

戻り値は、floatとして解析される前のintです。

オペランドの1つをfloatとしてキャストするか、3600.0を使用します。

return secs/3600.0
于 2012-11-17T19:44:58.337 に答える
2

問題は、コードが整数除算の結果を受け取り、それを浮動小数点数にキャストすることです。したがって、次のようになります。

「秒単位で格納された整数を整数3600で割った結果の商を計算します。これを浮動小数点数に変換して、結果を返します。」つまり、19,800 / 3600 =5.5.0に変換して戻ります。

代わりに、floatを受け入れるように関数を変更するか、最初に数値をfloatに変換(キャスト)することにより、最初からfloatを使用します。

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