C或目标C中的数学问题

Xco*_*der 6 c iphone math objective-c

这可能是一个愚蠢而简单的问题,但似乎有时最简单的事情会给我带来更多问题!

这个公式假设给我一个0到100之间的数字.

(200 / 23) * Abs(Mod(2987, 23) - 23 / 2)
Run Code Online (Sandbox Code Playgroud)

在目标CI编码它像这样:

(200 / 23) * abs(2987 % 23) - (23 / 2);
Run Code Online (Sandbox Code Playgroud)

公式是否有缺陷(并且在0到100之间没有给出答案)或者我的代码是错的?似乎我的模数没有给我正确的结果.它不应该给我一个整数吗?

谢谢

JSc*_*her 17

您的代码在目标C中是错误的...

(200 / 23) * abs(2987 % 23) - (23 / 2);
Run Code Online (Sandbox Code Playgroud)

应该

(200 / 23) * abs((2987 % 23) - (23 / 2));
Run Code Online (Sandbox Code Playgroud)

这只是73.9.

但是这个公式也是不正确的,你想要0到100之间的值.你当前的公式没有达到0,因为%23的范围是0-22,所以如果你减去23/2然后你可以得到的最低值取绝对值为.5(11-11.5和12-11.5).在这种情况下,22将是理想的数字.

同样通过减去23/2你得到一个不均匀的分布,如果你只是将mod乘以100/22,你会更好.知道你在尝试什么会有所帮助.

  • 实际上,他本来可以写成73.9130434783 :-P. (3认同)