Float没有返回正确的十进制值

时间:2012-12-20 15:45:08

标签: 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,这是不对的

2 个答案:

答案 0 :(得分:1)

使用

float pages = resultInt / 10.0f;

int/intintint/floatfloat/intfloat


已修改以获取更多解释

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

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

答案 1 :(得分:1)

这与您使用整数而非浮动的事实有关。 告诉你正在使用的变量它们是浮点数并且你已经完成了。

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