Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
ник: Дядя Федор У акса бывает некорректное округление. Особенно это прявляется в документах типа счета, когда округляется сумма по строке. Бывает, что сумма сумм по строке (SUM()) не совпадает с реальной суммой. Округлять можно, например так:
Public Function DRound(AnyValue As Variant, DecNumb As Integer) DRound = Int(AnyValue * 10 ^ DecNumb + 0.5) / 10 ^ DecNumb End Function
Public Function Round( _ ByVal Number As Variant, NumDigits As Long, _ Optional UseBankersRounding As Boolean = False) As Double Dim dblPower As Double Dim varTemp As Variant Dim intSgn As Integer If Not IsNumeric(Number) Then ' Raise an error indicating that ' you've supplied an invalid parameter. Err.Raise 5 End If dblPower = 10 ^ NumDigits ' Is this a negative number, or not? ' intSgn will contain -1, 0, or 1. intSgn = Sgn(Number) Number = Abs(Number) ' Do the major calculation. varTemp = CDec(Number) * dblPower + 0.5 ' Now round to nearest even, if necessary. If UseBankersRounding Then If Int(varTemp) = varTemp Then ' You could also use: ' varTemp = varTemp + (varTemp Mod 2 = 1) ' instead of the next If ...Then statement, ' but I hate counting on TRue == -1 in code. If varTemp Mod 2 = 1 Then varTemp = varTemp - 1 End If End If End If ' Finish the calculation. Round = intSgn * Int(varTemp) / dblPower End Function
Ваше имя:
Пароль:
Сообщение:
Прикрепить:
Для вставки смайлов в текст щелкните по значку.