Jak przekonwertować BigDecimal na Double w Javie?


112

Jak konwertujemy BigDecimalna Doublejava? Mam wymaganie, w którym musimy użyć Double jako argumentu, ale otrzymujemy, BigDecimalwięc muszę przekonwertować BigDecimalna Double.


10
Co powiesz nanew BigDecimal(2).doubleValue()
Matthias,

6
Zawsze czytaj dokumentację przed zadaniem pytania. Często znajdziesz odpowiedź na twoje pytanie. Zobacz doubleValue(). (Wskazówka: aby znaleźć dokumentację dla określonej klasy, po prostu wyszukaj w Google nazwę klasy, a następnie java. Na przykład, aby znaleźć tę dokumentację, szukałem „BigDecimal Java”)
Justin

1
„Mam wymaganie, w którym musimy użyć parametru Double jako argumentu”. Pobierz zmienione wymaganie. W ogóle nie ma sensu używać, BigDecimalchyba że używasz go od końca do końca. Ten wymóg zagraża dokładności; może zagrozić zgodności z przepisami; i może stanowić zaskarżalne zaniedbanie.
Markiz Lorne

Dlaczego używasz, Doublea nie double. Czy to może być pole null?
Peter Lawrey

@EJP Używanie doublenie jest takie złe, ale ponieważ ma ponad 15 cyfr dokładności reprezentacji, która jest większa niż większość programów, ale zgadzam się, że nie ma sensu używać BigDecimal przez jakiś czas, ponieważ jest bardziej prawdopodobne, że dodasz błędy / złożoność.
Peter Lawrey,

Odpowiedzi:


225

Musisz użyć doubleValue()metody, aby uzyskać podwójną wartość z obiektu BigDecimal.

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

Cześć, użyłem tego samego, ale problem polega na tym, że oba anser są różne, moje dane dziesiętne to 13555261857,79, a po konwersji na dwukrotność jego 1.355526185779E10 .. Jak uzyskać takie same dane wyjściowe po konwersji
liczb

@ user13926345 - Obie mają te same wartości. Tylko tyle, że pierwszy wynik jest normalną reprezentacją wartości, a drugi jest reprezentacją naukową .
SudoRahul

35

Możesz przekonwertować BigDecimalna doubleużywanie .doubleValue(). Ale uwierz mi, nie używaj go, jeśli masz manipulacje walutowe. Powinien być zawsze wykonywany BigDecimalbezpośrednio na obiektach. Utrata precyzji w tych obliczeniach jest poważnym problemem w obliczeniach walutowych.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.