Як перетворити BigDecimal в Double в Java?


112

Як ми перетворюємося BigDecimalна DoubleJava? У мене є вимога, коли ми повинні використовувати Double як аргумент, але ми отримуємо, BigDecimalтому я повинен перетворити BigDecimalна Double.


10
Як щодоnew BigDecimal(2).doubleValue()
Маттіас

6
Завжди читайте документацію, перш ніж задавати питання. Ви часто виявите, що на ваше запитання відповіли. Див doubleValue(). (. Підказка: знайти документацію для конкретного класу, просто Google пошук по імені класу, а потім Java , наприклад, щоб знайти цю документацію, я шукав «BigDecimal Java»)
Justin

1
"У мене є вимога, коли ми повинні використовувати Double як аргумент" Змінити вимогу. Немає сенсу користуватися BigDecimalвзагалі, якщо ви не використовуєте його в кінці. Ця вимога ставить під загрозу точність; може ставити під загрозу дотримання нормативних вимог; і може становити поважну недбалість.
Маркіз Лорн

Чому ви використовуєте, Doubleа ні double. Це поле, яке може бути null?
Пітер Лорі

@EJP Використання doubleне так вже й погано, але оскільки він має 15+ цифр точності представлення, що більше, ніж потрібно більшості програм, але я погоджуюся, що немає сенсу використовувати BigDecimal деякий час, оскільки ви, швидше за все, додаєте помилки / складність.
Пітер Лорі

Відповіді:


225

Вам потрібно скористатися doubleValue()методом, щоб отримати подвійне значення від об'єкта BigDecimal.

BigDecimal bd; // the value you get
double d = bd.doubleValue(); // The double you want

Привіт, я використовував те ж саме, але проблема є і anser, різні мої десяткові показники склали 13555261857.79, і при перетворенні в подвійний його 1.355526185779E10 .. Як я отримаю такий же вихід після перетворення десяткового в подвійний
user13926345

@ user13926345 - І те й інше значення. Тільки те, що перший вихід - це нормальне представлення вартості, а другий - наукове подання .
SudoRahul

35

Ви можете перейти BigDecimalна doubleвикористання .doubleValue(). Але повірте, не використовуйте це, якщо у вас є маніпуляції з валютою. Це завжди слід виконувати BigDecimalбезпосередньо на об'єктах. Втрати точності в цих розрахунках є великими проблемами часу в обчисленнях, пов'язаних з валютою.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.