我在使用UILabel中的浮动时遇到问题。
float doubleNum;
floatNum = 10 / 20;
cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum];
如果我使用“floatNum = 10/10;”它正确返回“1.000000000”,但是,如果我输入“floatNum = 10/20”,则返回“0.0000000”。我已经尝试过我所知道的一切,但它不起作用。我知道这是一个愚蠢的错误,但我无法弄明白。
节日快乐。 :)
答案 0 :(得分:4)
你需要将一个整数转换为浮点数。
尝试用以下代码替换分区线:
float floatNum = (float) 10 / 20;
你应该得到正确答案。
或者,如果可能的话,只需在你的部门中使用花车:
float floatNum = 10.0f / 20.0f;
也应该有用
答案 1 :(得分:2)
这里的问题是你要为floatNum分配一个INTEGER除以另一个INTEGER的结果。 10/20的结果确实为0,并且作为浮点数,它显示为0.0000000。为了获得正确的结果,您需要使用强制转换类型将其转换为浮点数或将.0添加到其中一个数字。在除法中,如果其中一个数字是浮点数(通过向其中一个数字添加.0就可以轻松完成),结果也将是浮点数。
答案 2 :(得分:0)
通常,C执行“整数除法”(基本上,没有余数的除法 - 10/3是3R1,因此它产生 3 )。
当您输入floatNum = 10/20
时,它会10/20 = 0
(余数为10)
要解决这个问题,你必须告诉程序你给它的浮点数。尝试使用:
floatNum = 10.0 / 20
,
floatNum = 10 / 20.0
或者
floatNum = float (10 / 20)
。
所有这些都应该有用。
答案 3 :(得分:0)
尝试floatNum = 10.0f/20.0f
(即确保使用浮点数而不是整数进行计算)
答案 4 :(得分: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变量a:int / int产生整数,您将其分配给float并将其打印为0.0000000
对于float变量b:float / int产生float,赋值给float并打印它0.008333
对于float变量c:float / float产生float,所以0.008333
最后一个更精确浮动。以前的类型是double类型:所有浮点值都存储为double数据类型,除非值后跟'f'以专门指定float而不是double。
将您的代码更改为:
float floatNum;
floatNum = 10.0f / 20.0f;
cashLabel.text = [[NSString alloc] initWithFormat:@"%f", floatNum];