-2

我遇到了一个我认为很容易解决的问题,但我找不到答案:

long test = 8064269 / 8300000;
NSLog(@"%lu",test);

日志给了我:

0 (should be something near to 1)

稍后我需要对此做更多的数学运算,然后是:

long test = 8064269 / 8300000 * 277;
NSLog(@"%lu",test);

日志给了我:

4294967048 (should be something near to 277)

我究竟做错了什么?

4

1 回答 1

2
8064269 / 8300000

是整数除法,因为所有操作数都是整数类型。也就是说,它会截断小数部分,只留下整数部分,即 0。

但即使不是这种情况,您如何期望将小数存储在整数中(在 a 中long)?同样,分配给整数也会截断结果。首先,你需要

float test = 8064269.0 / 8300000.0;
NSLog(@"%f", test);
于 2012-09-25T16:38:06.300 回答