Iphone 浮点不返回正确的十进制值

Iphone 浮点不返回正确的十进制值,iphone,objective-c,ios,Iphone,Objective C,Ios,这是我的代码: int resultInt = [ja.resultCount intValue]; float pages = resultInt / 10; NSLog(@"%d",resultInt); NSLog(@"%.2f",pages); resultInt从php脚本返回,值为3559,因此页面结果应该是355.9,但我得到的结果是355.00,这不正确 float pages = resultInt / 10.0f; int/int是int 但是int/float或fl

这是我的代码:

int resultInt = [ja.resultCount intValue];
float pages = resultInt / 10;


NSLog(@"%d",resultInt);
NSLog(@"%.2f",pages);
resultInt从php脚本返回,值为3559,因此页面结果应该是355.9,但我得到的结果是355.00,这不正确

float pages = resultInt / 10.0f;
int/int
int
但是
int/float
float/int
float


已编辑以获取更多解释

重要的是要记住,数学运算的结果值受接收变量数据类型规则的约束。除法运算的结果可能会产生浮点值。但是,如果分配给整数,小数部分将丢失。同样重要但不太明显的是,对多个整数执行操作并将其分配给非整数的效果。在这种情况下,结果在隐式转换之前作为整数计算。这意味着,尽管将结果值指定给浮点变量,但除非至少一个值先显式转换,否则小数部分仍然会被截断。以下示例说明了这一点:

int a = 7;
int b = 3;
int integerResult;
float floatResult;

integerResult = a / b;          // integerResult = 2  (truncated)
floatResult = a / b;            // floatResult = 2.0  (truncated)
floatResult = (float)a / b;     // floatResult = 2.33333325

这与您使用的是整数而不是浮点有关。 告诉您正在使用的变量它们是浮动,您就完成了

int resultInt = [ja.resultCount intValue];
float pages = (float)resultInt / 10.f;

你的回答是正确的。但是如果你能补充一些解释就好了。谢谢。我可能在你更新答案的同时写了我的评论。你为什么使用float而不是double?不需要演员阵容。将常数标记为浮点数就足够了。只要两个操作数中有一个是浮点数,整个操作都将被视为浮点数。没错,但这会使错误更加明显。