Я нигде не мог найти, в каких состояниях VBA есть специальная переменная для числа e, поэтому я решил, что достаточно большого количества знаков после запятой. В мануале указано следующее:
Вы можете использовать десятичные переменные для денежных значений. Преимуществом является точность значений. Тип данных Double быстрее и требует меньше памяти, но подвержен ошибкам округления. Тип данных Decimal сохраняет полную точность до 28 знаков после запятой.
Https://learn.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/data-types/numeric-data-types
Я пробовал делать Dim e@ ("@" - десятичный идентификатор из руководства), а также этот формат
Dim MyDecimal As Variant
MyDecimal = CDec(3000000000000)
От https://bettersolutions.com/vba/data-types/decimal-data-type.htm
Однако, когда я пытаюсь инициализировать e значением 2.7182818284590452353602874713, оно округляется до 2.71828182845905. Что тут происходит? Можно ли не использовать 28 знаков после запятой?
Что тут происходит? Можно ли не использовать 28 знаков после запятой?
Это связано с тем, что когда вы делаете это, значение читается как Double, таким образом, усекается до того, что может содержать этот тип данных, прежде чем CDec преобразует его.
? CDec(2.7182818284590452353602874713)
2.71828182845904
? CDec(CDbl("2.7182818284590452353602874713"))
2.71828182845904
? CDec("2.7182818284590452353602874713")
2.7182818284590452353602874713
При проверке документов в Интернете вы должны быть осторожны, вы не смотрите на VB.NET, который является полностью отличной от VBA платформой, за исключением синтаксического смысла.