在 UILabel 中显示浮点数
Posted
技术标签:
【中文标题】在 UILabel 中显示浮点数【英文标题】:Display Float In UILabel 【发布时间】:2011-12-25 23:09:29 【问题描述】:我在 UILabel 中使用浮点数时遇到问题。
float doubleNum;
floatNum = 10 / 20;
cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum];
如果我使用“floatNum = 10 / 10;”它正确返回“1.000000000”,但是,如果我输入“floatNum = 10 / 20”,它会返回“0.0000000”。我已经尝试了我所知道的一切,但它不起作用。我知道这是一个愚蠢的错误,但我想不通。
节日快乐。 :)
【问题讨论】:
【参考方案1】:您需要将其中一个整数转换为浮点数。
尝试将分割线替换为:
float floatNum = (float) 10 / 20;
你应该得到正确的答案。
或者如果可能的话,在你的部门中使用浮点数:
float floatNum = 10.0f / 20.0f;
应该也可以
【讨论】:
【参考方案2】:这里的问题是您将一个 INTEGER 除以另一个 INTEGER 的结果分配给 floatNum。 10 / 20 的结果确实为 0,作为浮点数,它显示为 0.0000000。为了获得正确的结果,您需要使用强制转换类型将其转换为浮点数或将 .0 添加到其中一个数字。在除法中,如果其中一个数字是浮点数(只需将 .0 添加到其中一个即可轻松完成),结果也将是浮点数。
【讨论】:
【参考方案3】:通常,C 执行“整数除法”(基本上,没有余数的除法 - 10/3 是 3R1,所以它产生 3)。
当您输入 floatNum = 10/20
时,它会输入 10/20 = 0
(余数 10)。
要解决此问题,您必须告诉程序您要为其提供浮点数。尝试使用:floatNum = 10.0 / 20
、floatNum = 10 / 20.0
或floatNum = float (10 / 20)
。
所有这些都应该有效。
【讨论】:
非常感谢!我什至没有想到这一点。我认为它会自动执行此操作。再次感谢您!【参考方案4】:尝试floatNum = 10.0f/20.0f
(即确保使用浮点数而不是整数进行计算)
【讨论】:
【参考方案5】:考虑以下示例以了解浮动的工作原理:
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 变量 a : int / int 产生整数,您将其分配给 float 并打印为 0.0000000
对于float变量b:float / int产生float,赋值给float并打印0.008333
对于浮点变量 c:float / float 产生浮点数,所以 0.008333
最后一个是更精确的浮动。以前的都是 double 类型:所有浮点值都存储为 double 数据类型,除非该值后面跟着一个 'f' 来明确指定一个浮点数而不是双精度数。
将您的代码更改为:
float floatNum;
floatNum = 10.0f / 20.0f;
cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum];
【讨论】:
以上是关于在 UILabel 中显示浮点数的主要内容,如果未能解决你的问题,请参考以下文章