Каков самый соответствующий тип данных для хранения значений валюты в VB.NET?
Decimal
(псевдоним для System.Decimal
структуры в BCL) предназначен для хранения денежных значений. Это 128-битный десятичный тип с плавающей точкой (в отличие от двоичного типа с плавающей точкой), и он полезен для хранения "реальных" значений с высокой десятичной точностью. Под реальным миром я имею в виду измерения, которые изначально производятся в десятичной системе счисления. Double обычно подходит для вычислений, которые не требуют такой высокой точности, когда они представлены в виде десятичных чисел.
Тип значения Decimal представляет десятичные числа в диапазоне от положительных 79,228,162,514,264,337,593,543,950,335 до отрицательных 79,228,162,514,264,337,593,543,950,335. Тип значения Decimal подходит для финансовых расчетов, требующих большого количества значащих целых и дробных цифр и отсутствия ошибок округления. Тип Decimal не устраняет необходимость округления. Скорее, он минимизирует ошибки, связанные с округлением. Например, следующий код выдает результат 0.99999999999999999999999999999999, а не 1.