Language agnostic 轮到任意划分?

Language agnostic 轮到任意划分?,language-agnostic,math,rounding,Language Agnostic,Math,Rounding,我想根据任意除法进行四舍五入,例如,我得到一个从0到1的数字,我想根据除法将其四舍五入为48,例如,如果我得到5/96,我想要2/48或3/48。有什么好的公式可以做到这一点?与舍入到小数点符号的公式相同。如果您有n“分区”和编号x,请执行四舍五入(x*n)/n 在您的示例中,它将是round((5/96)*48)/48=round(2.5)/48=2/48 round可以替换为floor或ceil,具体取决于您想要的方向。采用整数除法,因此它将向下取整: float retVal = scal

我想根据任意除法进行四舍五入,例如,我得到一个从0到1的数字,我想根据除法将其四舍五入为48,例如,如果我得到5/96,我想要2/48或3/48。有什么好的公式可以做到这一点?

与舍入到小数点符号的公式相同。如果您有
n
“分区”和编号
x
,请执行
四舍五入(x*n)/n

在您的示例中,它将是
round((5/96)*48)/48=round(2.5)/48=2/48


round
可以替换为
floor
ceil
,具体取决于您想要的方向。

采用整数除法,因此它将向下取整:

float retVal = scaleRange(in, oldMin, oldMax, newMin, newMax) {
  return (in / ((oldMax - oldMin) / (48 - 0))) + 0;
}

a是的,我在发布后不久就意识到了这一点