2014-01-10 44 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:来格式化数字。这将确保它们基于其语言环境对所有用户看起来都是正确的。