我需要以非常特定的方式划分可变距离。分隔的间距必须至少为40个单位,最大为80个单位。
我已经尝试了几种不同的代码,但是我在努力将最小/最大变量包括在我的部门中一事无成。
double totaldist = X;
double division = totaldist / 80;
double roundup = Math.Ceiling(division);
double space = totaldist / roundup;
double increment = 0;
while (increment < totaldist)
{
increment = increment + space;
}
附带的代码显然缺少我想要完成的工作,我不确定如何弥合差距。谢谢
答案 0 :(得分:2)
因此,您要做的就是遍历所有可能的除数并选择最佳除数。完成此操作的最简单方法如下:
<View style={{paddingLeft:10,
height:300, marginBottom:10,
borderWidth:1,
borderStyle: 'dashed',
borderColor:'red',
borderTopColor:'white'}}>
这将始终返回最接近的结果。即使没有真正的解决方案,它仍然会提供一个近似的答案作为后备。
答案 1 :(得分:0)
我会测试每个除数是否为mod 0(无余数)
int d = 420;
int s = 40;
for(; s <= 80; s++){
if(d%s==0)
break;
}
if(s==81)
Console.Write("There is no suitable divisor");
else
Console.Write($"{d} divides into {s} segments of {d/s} with no remainder");
如果要最小化段长度(更多段数),请从80开始并在循环中朝40努力-将d设置为480,从80开始,您应该获得“ 80个长度为6的段”比“长度为12的40段”
您甚至可以用圈圈变得可爱,而且没有身体:
for(; s <= 80 && d%s > 0; s++){ }
但这不是那么可读/自我解释