2011-12-25 73 views
2

我在使用UILabel中的浮點數時遇到問題。在UILabel中顯示浮點數

float doubleNum; 

floatNum = 10/20; 

cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum]; 

如果我使用「floatNum = 10/10;」它正確返回「1.000000000」,但是,如果我把「floatNum = 10/20」返回「0.0000000」。我已經嘗試瞭解我所知道的一切,但它不起作用。我知道這是一個愚蠢的錯誤,但我無法弄清楚。

節日快樂。 :)

回答

4

你需要轉換整數的之一的浮動。

嘗試替換分區線:

float floatNum = (float) 10/20; 

,你應該得到正確的答案。

或者如果可能就在你的部門使用花車:

float floatNum = 10.0f/20.0f; 

也應該努力

2

這裏的問題是,你正在分配一個INTEGER除以另一個floatNum的結果。 10/20的結果確實爲0,並且作爲浮點數顯示爲0.0000000。爲了獲得正確的結果,您需要使用轉換類型將其轉換爲浮點型或將.0添加到其中一個數字。在劃分中,如果其中一個數字是一個浮點數(這很容易通過向其中的一個添加一個.0來完成),結果也將是一個浮點數。

0

通常情況下,C執行「整數除法」(基本上,劃分沒有餘數 - 10/3是3R1,因此它產生)。
當您鍵入floatNum = 10/20時,它的確輸入了10/20 = 0(餘數爲10)。
要解決這個問題,你必須告訴你給它的程序是浮點數。嘗試使用:
floatNum = 10.0/20,
floatNum = 10/20.0
floatNum = float (10/20)
所有這些應該工作。

+0

謝謝你,這麼多!我甚至沒有想到這一點。我想它會自動做到這一點。再次感謝你! – MerryXmax

0

嘗試floatNum = 10.0f/20.0f(即請確保計算正在用浮漂,而不是整數做)

0

考慮下面的例子來了解如何彩車工作:

float a = 1/120; 
float b = 1.0/120; 
float c = 1.0/120.0; 
float d = 1.0f/120.0f; 

NSLog(@"Value of A:%f B:%f C:%f D:%f",a,b,c,d); 

Output: Value of A:0.000000 B:0.008333 C:0.008333 D:0.008333 

對於float變量:INT/int得到您正在分配給float的整數並將其打印出來0.0000000

對於float變量b:浮動/ INT產量浮動,分配給浮動進行打印0.008333

對於float變量c:浮動/浮動產量浮動,所以0.008333

最後一個是更精確的浮動。以前的類型是double類型的:所有的浮點值都被存儲爲雙數據類型,除非該值後面跟着'f'來具體指定float而不是double。

你的代碼更改爲:

float floatNum; 

floatNum = 10.0f/20.0f; 

cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum];