Vb.net 四舍五入到增量2.5?

Vb.net 四舍五入到增量2.5?,vb.net,Vb.net,我需要将一个值四舍五入到2.5的最接近倍数 例如: 6-->7.5 7.6-->10 等等 这似乎是最好的方法 Function RoundToIncrement(ByVal originalNumber As Decimal, ByVal increment As Decimal) As Decimal Dim num = Math.Round(originalNumber / increment, MidpointRounding.AwayFromZero) * in

我需要将一个值四舍五入到2.5的最接近倍数

例如:
6-->7.5
7.6-->10
等等

这似乎是最好的方法

   Function RoundToIncrement(ByVal originalNumber As Decimal, ByVal increment As Decimal) As Decimal

        Dim num = Math.Round(originalNumber / increment, MidpointRounding.AwayFromZero) * increment
        If originalNumber Mod increment <> 0 And num < originalNumber Then
            num += increment
        End If
        Return num

    End Function
函数RoundToIncrement(ByVal原始数为十进制,ByVal增量为十进制)为十进制
Dim num=数学舍入(原始数/增量,中点舍入。远离零)*增量
如果原始编号Mod递增0且num<原始编号,则
num+=增量
如果结束
返回数
端函数

将数字除以2.5,四舍五入到最接近的整数,然后将结果乘以2.5

你很接近

Function RoundToIncrement(ByVal orignialNumber As Decimal, ByVal increment As Decimal) As Decimal
    Return Math.Ceiling( orignialNumber / increment ) * increment
End Function

数学。上限总是将非整数向上取整,因此不需要工作地点差价调整数。

将该数字除以2.5。四舍五入到最接近的1。乘以2.5

当心累积的错误,你就万事大吉了


-Adam

看着我,好像代码是用来调整第一行向下舍入的值的。但我不知道VB:大概有一个数学。Ceil或类似的比数学更好。回合?同意。。。数学。天花板可以代替数学。圆形以达到相同的效果。
        /*
               This will round up (Math.Ceiling) or down (Math.Floor) based on the midpoint of the increment.  
               The other examples use Math.Ceiling and therefore always round up.
               Assume the increment is 2.5 in this example and the number is 6.13
            */
            var halfOfIncrement = Increment / 2;                                    // 2.5 / 2 = 1.25
            var floorResult = Math.Floor(originalNumber / Increment);               //Math.Floor(6.13 / 2.5) = Math.Floor(2.452) = 2
            var roundingThreshold = (floorResult * Increment) + halfOfIncrement;    //(2 * 2.5) = 5 + 1.25 = 6.25

            if (originalNumber >= roundingThreshold)                                //6.13 >= 6.25 == false therefore take Math.Floor(6.13/2.5) = Math.Floor(2.452) = 2 * 2.5 = 5
                result = Math.Ceiling(originalNumber / Increment) * Increment;
            else
                result = Math.Floor(originalNumber / Increment) * Increment;