Для сравнения double и decimal следует ли использовать double to decimal или decimal в double?
Мне нужно сравнить два значения.
Одно значение price
, которое представляет текущую цену чего-то и поэтому decimal
, потому что вы действительно можете купить или продать что-то по этой цене.
Другое значение estimatedPrice
, которое является результатом математических вычислений, и поэтому double
, потому что это просто estimation
, и вы не можете фактически выполнять какие-либо "операции" с помощью этого esitmatedPrice
теперь я хочу купить, если price < estimatedPrice
.
Так что я должен лить цену в double или valuPrice на десятичную?
Я понимаю, что после кастинга я получу "незначительные другие" цифры, но, похоже, у меня нет других вариантов.
Ответы
Ответ 1
Это зависит от данных. Десятичная имеет большую точность; double имеет больший диапазон. Если double может находиться за пределами десятичного диапазона, вы должны отдать десятичное значение в double (или вы можете написать метод, который возвращает результат без кастинга, если двойное значение находится за пределами десятичного диапазона, см. Пример ниже).
В этом случае кажется маловероятным, что двойное значение будет находиться за пределами десятичного диапазона, поэтому (особенно, поскольку вы работаете с данными о ценах) вы должны использовать double для десятичного числа.
Пример (можно использовать некоторую логику для обработки значений NaN):
private static int Compare(double d, decimal m)
{
const double decimalMin = (double)decimal.MinValue;
const double decimalMax = (double)decimal.MaxValue;
if (d < decimalMin) return -1;
if (d > decimalMax) return 1;
return ((decimal)d).CompareTo(m);
}
Ответ 2
decimal vs double! - Кого я должен использовать и когда?
Если вы больше озабочены точностью, конвертируйте в десятичную. Если нет, пойдите с удвоениями.
Ответ 3
Я рекомендую вам преобразовать в десятичный. потому что кажется, что вы хотите манипулировать денежными ценностями. но я могу дать этот короткий ответ: для точного (манипулирования денежной стоимостью специально для финансовых приложений) приложение использует десятичное значение. и если вы предпочитаете меньше ресурсов и более высокую скорость, используйте double.
Ответ 4
Я никогда не работал с ценами раньше в программном обеспечении, но из того, что я слышал, многие имеют дело с целыми числами. Например, для $1.23 сохраните его как целое число 123. Преобразование в десятичное число выполняется в самом конце, когда вы выводите результаты пользователю.
Точно так же, по вашей расчетной цене, можете ли вы иметь дело с цифрами, которые (скажем) в 100 раз больше?