Как преобразовать BigDecimal в Double в Java?

112

Как конвертировать BigDecimalв Doubleв Java? У меня есть требование, в котором мы должны использовать аргумент Double в качестве аргумента, но мы получаем, BigDecimalпоэтому мне нужно преобразовать BigDecimalв Double.

Субодх Джоши
источник
10
Как насчетnew BigDecimal(2).doubleValue()
Матиас
6
Всегда читайте документацию, прежде чем задать вопрос. Вы часто обнаружите, что на ваш вопрос ответили. Смотрите doubleValue(). (Подсказка: чтобы найти документацию по конкретному классу, просто выполните поиск в Google по имени класса, за которым следует java. Например, чтобы найти эту документацию, я искал «BigDecimal Java»)
Джастин
1
«У меня есть требование, в котором мы должны использовать в качестве аргумента Double» Получить изменение требования. Нет никакого смысла использовать его, BigDecimalесли вы не используете его непрерывно. Это требование снижает точность; может поставить под угрозу соблюдение нормативных требований; и может представлять собой небрежность, подлежащую судебному преследованию.
Маркиз Лорн,
Почему ты используешь, Doubleа нет double. Это поле, которое может быть null?
Питер Лоури
Использование @EJP doubleне так уж и плохо, но поскольку у него более 15 цифр точности представления, что больше, чем нужно большинству программ, но я согласен, что иногда нет смысла использовать BigDecimal, поскольку вы с большей вероятностью добавите ошибки / сложности.
Питер Лоури

Ответы:

227

Вам нужно использовать этот doubleValue()метод для получения двойного значения из объекта BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want
СудоРахул
источник
Привет, я использовал то же самое, но проблема в том, что оба anser разные, мой десятичный вывод был 13555261857.79, а при преобразовании в удвоение его 1.355526185779E10 .. Как мне получить такой же результат после преобразования десятичного числа в double
user13926345
@ user13926345 - Оба значения совпадают. Просто первый вывод - это нормальное представление значения, а другой - научное представление .
СудоРахул,
35

Вы можете перейти BigDecimalна doubleиспользование .doubleValue(). Но поверьте, не используйте его, если у вас есть валютные манипуляции. Его всегда следует выполнять BigDecimalнепосредственно на объектах. Потеря точности в этих расчетах - большая временная проблема в расчетах, связанных с валютой.

HIREN011
источник
10

Используйте метод doubleValue, присутствующий в классе BigDecimal :

double doubleValue()

Преобразует это BigDecimalв double.

Джунед Ахсан
источник