我有两个名为“domande”和“corrette”的NSInteger变量。我必须用它们执行这个操作:corrette * 10 / domande。我希望结果是一个浮点变量,所以我声明了一个“voto”变量:“float voto = corrette * 10 / domande;” 。当我用NSLog输出“voto”的值时,得到结果的近似值,后跟“.000000”。
以下是代码:
NSInteger domande = [numDomande integerValue];
NSInteger corrette = [numRisposteCorrette integerValue];
float voto = corrette*10/domande;
NSLog(@"float value is: %f", voto);
当我将“domande”赋值为7,并将“corrette”赋值为4时:voto = 5.000000 相反它应该是voto = 5.71 ......
如何让除法返回不是转换为float的整数类型,而是直接浮点类型?
答案 0 :(得分:9)
最简单的方法是:
float voto = 10.0f * corrette / domande;
通过将第一个参数设为float
,您可以保证其他参数也将被提升,并且中间和最终结果不会被截断。
您可以通过将corrette
投射到float
来获得类似的结果,但我倾向于尽可能简化。
答案 1 :(得分:4)
不是将整数转换为浮点数,而是首先得到浮点数:
CGFloat domandeFloat = [numDomande floatValue];
CGFloat corretteFloat = [numRisposteCorrette floatValue];
CGFloat voto = (corretteFloat / domandeFloat) * 10.0f
NSLog(@"float value is: %f", voto);
答案 2 :(得分:4)
NSInteger没有名为floatValue的方法。 NSInteger只是一个int。相反,解决方案是:
CGFloat domandeFloat = [[NSNumber numberWithInt: numDomande] floatValue];
CGFloat domandeFloat = [[NSNumber numberWithInt: numRisposteCorrette] floatValue];
CGFloat voto = (corretteFloat / domandeFloat) * 10.0f;
答案 3 :(得分:2)
首先尝试将NSIntegers转换为float类型:
float voto = (float)corrette*10/(float)domande;
答案 4 :(得分:0)
您可以将“10”从int转换为float,将其写为“10.0”
float voto = corrette*10.0/domande;
或
float voto = ((float)corrette*10) / (float)domande;
操作“/”返回它操作数的类型 - 5/4将返回int结果1,因为5和4是int,5.0 / 4.0将返回1.25,因为5.0和4.0被解释为浮点值。因此,您应手动将输入变量corrette
和domande
的类型转换为float