根据C#中的比率舍入一个数字

use*_*893 5 c# math rounding

我想围绕一个基于两个值的比率的数字.

该比率将包括大于或小于原始值的值

ratio = newValue / originalvalue
Run Code Online (Sandbox Code Playgroud)

newValue> originalValue我可以使用以下方法舍入到最接近的较低因子:

double NearestLowerFactor(float value, double factor)
{
    return Math.Floor(value / factor) * factor;
}
Run Code Online (Sandbox Code Playgroud)

例如:

  • 因子= 2
  • 比率= 3
  • NearestLowerFactor = 2

newValue <originalValue我希望舍入到该因子的最接近的倒数.

因此,如果因子是2,我想根据1/2的因子进行舍入,即1/2,1/4,1/8,1/16等.

例如:

  • originalValue = 8
  • newValue = 3
  • 比率= 0.375
  • NearestLowerFactor = 0.25或1/4.

在这种情况下,我如何舍入到最接近的较低因子?

Rik*_*Rik 1

Math.Pow(factor, Math.Floor(Math.Log(ratio, factor)))
Run Code Online (Sandbox Code Playgroud)