2014-01-10 45 views
-2

當我用我的應用程序中的數字進行計算時,我的輸出中沒有小數點! 這是我使用的代碼:iOS計算數字不顯示小數

int Vijfhonderdmeter = [_VijfHonderd.text intValue]; 
int vijftienhonderdmeter = [_vijftienhonderd.text intValue]; 

int vijfdeeldrie = vijftienhonderdmeter/3; 

int puntentotaal = Vijfhonderdmeter + vijfdeeldrie; 
_PuntenTotaal.text = [NSString stringWithFormat:@"%d",puntentotaal]; 

真正的輸出應87,18667,但我_Puntentotaal標籤只顯示87

有沒有人有辦法解決嗎?

順便說一句:

(_VijfHonderd.text intValue = 44.05). 
(_vijftienhonderd.text intValue = 129.41). 

謝謝您的時間,並幫助:)

+0

可能重複的[爲什麼劃分兩個整數不會浮動?](http://stackoverflow.com/questions/16221776/why-dividing-two-integers-doesnt-get-a-float) –

回答

0

你的代碼,您正在使用的數據類型int操作總是會返回一個非十進制值。

int Vijfhonderdmeter = [_VijfHonderd.text intValue]; here you are getting a non decimal value & later also you are operating it with other non-decimal values. To get decimal values, you should use `double` or `float` datatype. 

現在,試試這個:

float Vijfhonderdmeter = [_VijfHonderd.text floatValue]; 
float vijftienhonderdmeter = [_vijftienhonderd.text floatValue]; 

float vijfdeeldrie = vijftienhonderdmeter/3; 

float puntentotaal = Vijfhonderdmeter + vijfdeeldrie; 
_PuntenTotaal.text = [NSString stringWithFormat:@"%f",puntentotaal]; 

參考this link有關premitive數據類型的詳細知識客觀-C

+0

也不起作用。 Int除以Int仍然是int。將其更改爲'/ 3.0'或'/ 3.0f'。 – Putz1103

+0

@ Putz1103不,代碼是正確的。 'float/int'完成爲'float'。 – rmaddy

+0

啊,是的,我的壞。我仍在讀op的int基元,而不是更新浮點基元。 – Putz1103

2

3個問題:

1)您使用的整數除法具有整數值。如果你想浮點數你需要浮點值並做浮點除法:

double Vijfhonderdmeter = [_VijfHonderd.text doubleValue]; 
double vijftienhonderdmeter = [_vijftienhonderd.text doubleValue]; 

double vijfdeeldrie = vijftienhonderdmeter/3.0; 

2)您使用格式化的%d結果。使用%fdouble值。

3)使用NSNumberFormatter而不是stringWithFormat:來格式化數字。這將確保它們基於其語言環境對所有用戶看起來都是正確的。