我从int
UITextField
[self.dbRef.text intValue];
值
我想格式化该值,以便我可以添加一个小数位,以预先确定数字即。如果[self.dbRef.text intValue];
返回4
,我需要将该值设为0.04
到目前为止,我尝试了各种方法,包括
float Y = ([self.dbRef.text intValue]/100);
slice.value = Y;
NSLog(@"float Y value = %f",Y);
返回零
NSString* formatedTotalApplianceString = [NSString stringWithFormat:@"0.%@", self.dbRef.text];
NSLog(@"formated string = %@",formatedTotalApplianceString);
int totalAppliances = [formatedTotalApplianceString intValue];
NSLog(@"Resulting int value = %d",[formatedTotalApplianceString intValue]);
slice.value = totalAppliances;
NSLog(@"total appliances int value = %d",totalAppliances);
返回零
答案 0 :(得分:2)
更改
float Y = [self.dbRef.text intValue]/100;
到
float Y = ((float)[self.dbRef.text intValue])/100;
在你的第一个版本中。
将int除以int返回int结果,即使然后将其指定给float。在这种情况下,4/100 = 0.
答案 1 :(得分:2)
你正在进行整数除法,因此0
值在该上下文中是正确的,因为整数不能表示分数(除非你正在进行定点算术,但这是一种不同的蠕虫)。您需要执行浮点除法,例如:
float Y = ([self.dbRef.text floatValue]/100.0f);
[self.dbRef.text floatValue]
或100.0f
会将其转换为浮动除法,因为如果另一方是int
,它会自动转换为浮点数。但“最好”的方法是让两个值都相同。
答案 2 :(得分:1)
[self.dbRef.text intValue]/100
的问题在于它是一个整数除法。它会降低分数。解决这个问题的一种方法是除以100.0
:
[self.dbRef.text intValue]/100.0
但是,如果您只需要在分数前添加零,这不是最有效的方法:您可以通过将打印的float
填充到两个位置来完全避免int
带有前导零:
// If text is 4, the code below prints 0.04
NSLog(@"0.%02d", [self.dbRef.text intValue]);
答案 3 :(得分:0)
第一个代码返回零,因为您正在执行整数除法,从而产生整数结果。您应该将值转换为浮点数。
第二个代码也返回零,因为您要求浮点值的intValue
。因此小数部分将被丢弃。
NSString
还有floatValue
方法,您应该使用它来获取浮动值。一旦除以100,你仍然会有一个浮点值(如果商或被除数是一个浮点而另一个是一个整数,整数被提升为浮点数):
float Y = ([self.dbRef.text floatValue]/100);
slice.value = Y;