我需要将一个int分成另外两个int。第一个int不是常数所以一个问题就是,如何处理奇数,因为我只想要整数。例如,如果int = 5,那么int(2)将= 2并且int(3)将= 3.任何帮助将非常值得赞赏。
答案 0 :(得分:4)
假设您想表达x = a + b
,其中a
和b
尽可能接近x/2
:
a = ceiling(x / 2.0);
b = floor(x / 2.0);
这是伪代码,您必须从库中找出楼层和天花板的实际功能。确保除法作为浮点数执行。
纯粹的整数:
a = x / 2 + (x % 2 == 0 ? 0 : 1);
b = x / 2
(对于负数,这可能有点可疑,因为它取决于除数的行为和负数的模数。)
答案 1 :(得分:3)
你可以从数学中尝试ceil和floor函数来产生奇数输入的结果,如2和3;
int(2)=ceil(int/2); //will produce 3 for input 5
int(3)=floor(int/2); //will produce 2 for input 5
答案 2 :(得分:0)
我的答案不在Objective-C中,但我想你可以轻松地翻译它。 我的想法是:
part1 = source_number div 2
part2 = source_number div 2 + (source_number mod 2)
这样,如果起始编号为奇数,则第二个数字会更大。