Для того, чтобы избежать возможной потери точности в работе Java на Double
объектов, то есть:Сумма BigDecimal (ов) создано из возможного нуля Double
Double totalDouble = new Double(1590.0);
Double taxesDouble = new Double(141.11);
Double totalwithTaxes = Double.sum(totalDouble,taxesDouble);
//KO: 1731.1100000000001
System.out.println(totalwithTaxes); // 1731.1100000000001
Я написал этот код, где totalDouble
и taxesDouble
может быть также null
:
Double totalDouble = myObject.getTotalDouble();
Double taxesDouble = myObject.getTaxesDouble();
BigDecimal totalBigDecimalNotNull = (totalDouble==null) ? BigDecimal.valueOf(0d):BigDecimal.valueOf(totalDouble);
BigDecimal taxesBigDecimalNotNull = (taxesDouble==null) ? BigDecimal.valueOf(0d):BigDecimal.valueOf(taxesDouble);
BigDecimal totalWithTaxesBigDecimal = totalBigDecimalNotNull.add(taxesBigDecimalNotNull);
System.out.println(totalWithTaxesBigDecimal);
есть ли лучший способ (также с библиотеками третьей части, т.е. гуавы и т.д.), чтобы инициализировать BigDecimal
в этих случаях (ноль, если Double
является null
и Double
значение в противном случае)?
спасибо за подсказку об использовании «Дополнительный», я думаю, что буду использовать его в будущем. Для использования представления int или long for money я, к сожалению, не могу изменить этот выбор. Мне бы хотелось использовать целое число (и сосчитать cent) или использовать BigDecimal, но я работаю с фреймворком электронной торговли, и он использует double .. – user6904265