2012-04-02 47 views
2

我使用此代码试图将漂浮转换为int,然后用它的UILabel文本:正确使用将float转换为int来获取百分比?

[progLabel setText:[NSString stringWithFormat:@"Deck Progress %i%%",progBar.progress*100]]; 

,我已经试过这样:

[progLabel setText:[NSString stringWithFormat:@"Deck Progress %i%%",(int)progBar.progress*100]]; 

显示的文本是总是“0%”。

我也试过这其中的工作原理:

int pval=progBar.progress*100; 
[progLabel setText:[NSString stringWithFormat:@"Deck Progress %i%%",pval]]; 

我已经试过%F %%,但是这给了我太多的数字 - 我试图让只有0-100,没有小数位。

我在做什么错?

+0

尝试'(int)(progBar.progress * 100)' – 2012-04-02 18:54:39

回答

3

因为铸件具有比乘法更高的优先级的(int)仅适用于progBar.progress,并(int)progBar.progress始终为0,如果0≤progBar.progress < 1.你需要转换整个表达式像

(int)(progBar.progress * 100) 

另外,通过使用不显示小数部分的浮点格式,您完全可以避免强制转换。

[NSString stringWithFormat:@"Deck progress %.0f%%", progBar.progress * 100] 
+0

谢谢 - 我首先看到了dasblinkenlight - 我无法检查两者,但我可以投票支持你。 – wayneh 2012-04-02 18:58:11

+0

其实,我重新读了你的答案,它更彻底。 – wayneh 2012-04-02 19:11:37

1

显示的文字始终为“0%”。

这是因为你没有铸造浮子整数:你传递一个浮动到一个不知情的功能期待整数。您应该添加投:

[progLabel setText:[NSString stringWithFormat:@"Deck Progress %i%%",(int)(progBar.progress*100)]]; 
+0

Duh - 再次感谢。我会尽快检查答案。 – wayneh 2012-04-02 18:57:23