2012-11-17 28 views
1

我有一個簡單的函數,返回一個浮點數如下。在文本中顯示一個浮點數

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

鑑於秒= 19800,如果我在下面使用它,我最終得到5而不是5.5。

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

我在做什麼錯?我能做些什麼來設置num01(標籤)的字符串值爲5.5?

謝謝你的幫助。

回答

3

返回值在被解析爲float之前是一個int。

簡單地把一個操作數爲float或使用3600.0:

return secs/3600.0 
+0

哦,我的天哪......那是怎樣的Objective-C工作?有趣...我從來沒有在其他開發平臺上看到過它。非常感謝你。 –

+1

@TBlue這是大多數語言的工作原理,在這種情況下,C具體。表達式在被分配/返回之前被評估ht​​tp://msdn.microsoft.com/en-us/library/2bxt6kc4.aspx – John

+0

也許,我只是不知道在處理其他浮點數時我犯了一個錯誤語言。再次感謝你。 –

2

的問題是,你的代碼需要的integer division結果並將它轉換爲浮動。所以,它是這樣的:

「計算除以整數3600除以整數存儲的整數除以結果的商。將其轉換爲浮點數並返回結果。」即19,800/3600 = 5.轉換爲5.0並返回。

相反,使用從一開始就通過浮動要麼改變你的函數接受float或轉換(鑄造)你的號碼爲float第一:

return (float)sec/3600.0;