Big*_*ola 2 floating-point objective-c nsinteger
我有两个名为"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);
Run Code Online (Sandbox Code Playgroud)
当我为"domande"赋值7时,并且"corrette"值为4:voto = 5.000000相反它应该是voto = 5.71 ...
如何让除法返回不是转换为float的整数类型,而是直接浮点类型?
最简单的方法是:
float voto = 10.0f * corrette / domande;
Run Code Online (Sandbox Code Playgroud)
通过创建第一个参数a float
,您可以保证其他参数也将被提升,并且中间和最终结果不会遭受截断.
您可以通过转换corrette
为a 来获得类似的结果,float
但我倾向于尽可能简化.
您可以首先获得浮点数,而不是将整数转换为浮点数:
CGFloat domandeFloat = [numDomande floatValue];
CGFloat corretteFloat = [numRisposteCorrette floatValue];
CGFloat voto = (corretteFloat / domandeFloat) * 10.0f
NSLog(@"float value is: %f", voto);
Run Code Online (Sandbox Code Playgroud)