Какова точность типа данных Decimal?

Я нигде не мог найти, в каких состояниях 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 знаков после запятой?

При проверке документов в Интернете вы должны быть осторожны, вы не смотрите на VB.NET, который является полностью отличной от VBA платформой, за исключением синтаксического смысла.

Tim Williams 21.12.2020 04:28
newtonexcelbach.com/2015/10/26/the-vba-decimal-data-type содержит полезную информацию о Decimal. Может помочь вашему сообщению включить полный пример того, что вы делали при тестировании, поскольку ввод чисел в десятичный тип и из него в Excel в первую очередь означает работу с текстом (поскольку ячейки с числовым форматированием не могут иметь ту же точность, что и десятичный тип )
Tim Williams 21.12.2020 04:38
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
2
278
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
Что тут происходит? Можно ли не использовать 28 знаков после запятой?

Это связано с тем, что когда вы делаете это, значение читается как Double, таким образом, усекается до того, что может содержать этот тип данных, прежде чем CDec преобразует его.

? CDec(2.7182818284590452353602874713)
 2.71828182845904 

? CDec(CDbl("2.7182818284590452353602874713"))
 2.71828182845904 

? CDec("2.7182818284590452353602874713")
 2.7182818284590452353602874713 

Другие вопросы по теме