Що таке Decimal
Тип даних Decimal (Visual Basic)
Містить 128-розрядні (16-байтові) значення, що представляють 96-розрядні (12-байтові) цілі числа, що масштабуються змінною потужністю 10. Коефіцієнт масштабування вказує число цифр праворуч від десяткової точки; діапазон від 0 до 28. З масштабом 0 (без десяткових розрядів), максимально можливе значення - +/-79 228 162 514 264 337 593,5543,950,335 (+/-7.922816251426433759354 При 28 десяткових розрядах найбільше значення дорівнює +/-7.92816251426437593554395035, а найменше ненульове значення - +/-0.0000000000000000000000000000000000
Зауваження
Тип Decimal даних надає найбільше значимих цифр для числа. Він підтримує до 29 значущих цифр і може становити значення, що перевищують 7,9228 x 10^28. Він особливо підходить для обчислень, таких як фінансові, для яких потрібна велика кількість цифр, але не допускає округлення помилок.
Стандартне значення для типу Decimal — 0.
Поради щодо програмування
- Точність. Decimal не є типом даних із плаваючою комою. Структура Decimal містить двійкове ціле чисельне значення, а також біт знака і цілий коефіцієнт масштабування, що вказує, яка частина значення - десятковий дріб. Через це Decimal числа мають більш точне уявлення у пам'яті, ніж типи з плаваючою комою ( Single і Double ).
- Продуктивність. Тип Decimal даних є найповільнішим із усіх числових типів. Перед вибором типу даних слід зважувати важливість точності щодо продуктивності.
- Розширення. Тип Decimal даних розширюється до Single або Double. Це означає, що ви можете перетворити Decimal на будь-який з цих типів, не зіткнувшись з помилкою System.OverflowException .
- Кінцеві нулі. Visual Basic не зберігає кінцеві нулі в літералі Decimal. Проте змінна зберігає всі кінцеві нулі, отримані обчислювальним способом. Це показано у наступному прикладі.
Dim d1, d2, d3, d4 As Decimal d1 = 2.375D d2 = 1.625D d3 = d1 + d2 d4 = 4.000D MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) & ", d3 = " & CStr(d3) & ", d4 lang-console">d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4 Діапазон
Може знадобитися використовувати D символ типу для призначення великого значення змінної Decimal або константі. Ця вимога обумовлена тим, що компілятор інтерпретує літерал як Long, якщо символ літерального типу не слідує літералу, як показано в наступному прикладі.
Dim bigDec1 As Decimal = 9223372036854775807 'No overflow. Dim bigDec2 As Decimal = 9223372036854775808 ' Overflow. Dim bigDec3 As Decimal = 9223372036854775808D 'No overflow. Оголошення для bigDec1 не створює переповнення, оскільки значення, призначене йому, потрапляє до діапазону. Long Значення Long можна призначити змінною Decimal.
Оголошення для bigDec2 створює помилку переповнення, оскільки значення, призначене йому, занадто велике. Long Оскільки числовий літерал не може бути інтерпретований як Long першого, він не може бути призначений змінною Decimal .
Для bigDec3 цей символ D літерального типу вирішує проблему, змушуючи компілятор інтерпретувати літерал як не Decimal як. Long
Див. також
- System.Decimal
- Decimal
- Math.Round
- Data Types
- Тип даних Single
- Тип даних Double
- Функції перетворення типів
- Зведення про перетворення
- Ефективне використання типів даних
Джерело цього вмісту можна знайти на GitHub, де також можна створювати та переглядати проблеми та запити на витягування. Для отримання додаткових відомостей див. у нашому посібнику для учасників.