2011-12-25 60 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];