Я поддерживаю приложение CAD / CAM, и мне постоянно приходится иметь дело с числами с плавающей запятой.У меня есть функция, которую я вызываю fComp, и я передаю значение с плавающей запятой, когда мне нужно проверить на равенство.fComp вызывает функцию округления с заданным уровнем точности.Для нашей системы я округляю до 6 знаков после запятой.Ваше может потребоваться выше или сойти с рук ниже, это зависит от приложения.
Функция fComp существует, поэтому у меня есть одна возможность изменить коэффициент округления, используемый в этих вычислениях.Это оказалось полезным пару лет назад, когда мы начали производство высокоточных станков.
Public Function pRound(ByVal Value As Double, ByVal Power As Double) As Double
Dim TempValue As Double
Dim tSign As Double
TempValue = Value
tSign = TempValue
TempValue = Abs(TempValue)
TempValue = TempValue * 10 ^ (Power * -1)
TempValue = Fix(TempValue + 0.5)
TempValue = TempValue / 10 ^ (Power * -1)
pRound = TempValue * Sign(tSign)
End Function
Чтобы округлить до шестого знака после запятой, вы идете
RoundedNumber = pRound (MyValue, -6)
Отрицательный справа от десятичного знака положительный клевый.