Как преобразовать 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непосредственно на объектах. Потеря точности в этих расчетах - большая временная проблема в расчетах, связанных с валютой.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.