Вот как я должен был работать над этим:
Public Function Round(number As Double, dec As Integer) As Double
Dim decimalPowerOfTen = Math.Pow(10, dec)
If CInt(number * decimalPowerOfTen) = Math.Round(number * decimalPowerOfTen, 2) Then
Return Math.Round(number, 2, MidpointRounding.AwayFromZero)
Else
Return CInt(number * decimalPowerOfTen + 0.5) / 100
End If
End Function
Попытка с 1.905 с двумя десятичными знаками даст 1.91, как ожидалось, но Math.Round(1.905,2,MidpointRounding.AwayFromZero)
дает 1.90! Метод Math.Round абсолютно несогласован и непригоден для большинства проблем, с которыми могут столкнуться программисты. Я должен проверить, вызвано ли (int) 1.905 * decimalPowerOfTen = Math.Round(number * decimalPowerOfTen, 2)
тем, что я не хочу округлять то, что должно быть округлено вниз.
Это сообщение форума имеет сценарий удара для OSX, который должен добиться цели. Это берет имя пользователя в качестве аргумента и выходит из системы тот пользователь.
Я не попробовал его, таким образом, Ваш пробег может варьироваться. Но похоже, что это удовлетворяет Вашим потребностям. Чего точно Вы пытаетесь достигнуть?