如何将值向上舍入到一个数字的最接近的因子[重复]
Posted
技术标签:
【中文标题】如何将值向上舍入到一个数字的最接近的因子[重复]【英文标题】:How to round value UP to nearest factor of a number [duplicate] 【发布时间】:2015-10-15 03:00:26 【问题描述】:这里有几个关于如何将值四舍五入为已知倍数的问题。例如有这个question,但它显示了如何将一个值四舍五入到指定的倍数(例如,将 9 舍入到 5 的倍数将产生 10)。我想将一个值四舍五入到给定数字的最接近的因子。例如,假设我想将一个值四舍五入到最接近的因子 48。
Factors of 48: 1, 2, 3, 4, 6, 8, 12, 16, 24, 48
如果我的值是 9,我想四舍五入到 12。我知道这样做的唯一方法是蛮力:
class Program
static void Main(string[] args)
const int clock = 48;
int value = 9;
while( value < clock && (clock % value) != 0)
value++;
Console.WriteLine(value);
这很好用,但不聪明也不高效,至少我怀疑是这样。 除了蛮力,有没有更好的方法将数字四舍五入到基数的一个因子?
【问题讨论】:
澄清了问题陈述并解决了为什么提供的参考重复问题不适用。 跛脚,这是作为一个骗局关闭,但引用的重复问题和解决方案不能解决我的问题。大卫,您是否阅读了我的实际问题或仅根据标题做出决定? 来到这里寻找相同的。令人失望地发现这个错误关闭。 【参考方案1】:private int UCLN(a, b)
return (b==0)? a:UCLN(b, a%b) // first input a>b
主函数:
int u = UCLN(clock, value);
return clock / ((clock/u) / (value/u));
【讨论】:
以上是关于如何将值向上舍入到一个数字的最接近的因子[重复]的主要内容,如果未能解决你的问题,请参考以下文章