好吧,根据我的理解,一个分数的整数将以某种方式舍入,以便如果一个公式出现5/6 - 它会自动将其舍入为1.我有一个计算:
xyz = ((1300 - [abc intValue])/6) + 100;
xyz定义为NSInteger,abc是通过UIPicker选择的NSString。我希望计算(1300 - [abc intValue])为1300以下的每6个单位添加1到100.例如,1255应该导致xyz的值为100,而1254应该导致值为101。
现在,我知道上面的公式因为舍入原则而错了,但我从程序本身得到了一些疯狂的结果。当我在1259年打了一拳 - 我得到了106.当我在1255年打了一拳 - 我得到了107.为什么它会这样?
答案 0 :(得分:4)
你的理解是错误的。整数除法截断:
5 / 6 == 0
(1300 - 1259) / 6 == 41 / 6 == 6
(1300 - 1255) / 6 == 45 / 6 = 7
您可以使用:
xyz = ((1300.0 - [abc intValue])/6) + 100;
并将xyz设为NSDouble
。这将确保它进行浮点除法。
答案 1 :(得分:0)
您可能也会混淆数字和时间。 1255是低于1300的45,而不是低于5: - )