如何将值向上舍入到一个数字的最接近的因子[重复]

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));

【讨论】:

以上是关于如何将值向上舍入到一个数字的最接近的因子[重复]的主要内容,如果未能解决你的问题,请参考以下文章

r 将数字向上或向下舍入到一个漂亮的数字

将 DateTime 舍入到最接近的半小时 [重复]

如何使用 C# 舍入到最接近的千分之一

Math.round() 函数返回一个数字四舍五入后最接近的整数。

如何在 PHP 中舍入到最接近的 3 倍数? [复制]

如何在小数点后将 Dart 中的双精度数舍入到给定的精度?