Java'da BigDecimal'i Double'a dönüştürmek nasıl?


112

Java'ya nasıl BigDecimaldönüşüyoruz Double? Bence argüman olarak Double kullanmak zorunda bir gereksinim var ama biz alıyorsanız BigDecimalben dönüştürmek zorunda BigDecimaliçine Double.


10
Peki yanew BigDecimal(2).doubleValue()
Matthias

6
Bir soru sormadan önce daima belgeleri okuyun . Sık sık sorunuzun yanıtlandığını göreceksiniz. Bakın doubleValue(). (İpucu: belirli bir sınıfa ait belgeleri bulmak için, sınıf adını ve ardından java'yı google'da arayın. Örneğin, bu belgeleri bulmak için "BigDecimal Java" yı aradım)
Justin

1
"İkili argüman olarak kullanmamız gereken bir gereksinimim var" Gereksinimi değiştirildi. BigDecimalUçtan uca kullanmadığınız sürece kullanmanın hiçbir anlamı yok . Bu gereksinim doğruluğu tehlikeye atar; mevzuata uygunluğu tehlikeye atabilir; ve dava edilebilir ihmal teşkil edebilir.
Marquis of Lorne

Neden kullanıyorsun Doubleve kullanmıyorsun double. Olabilecek bir alan mı null?
Peter Lawrey

@EJP Kullanımı doubleo kadar da kötü değil, ancak çoğu programın ihtiyaç duyduğundan daha fazla olan 15+ basamaklı temsil doğruluğuna sahip olduğu için, ancak hata / karmaşıklık ekleme olasılığınız daha yüksek olduğu için bazen BigDecimal'i kullanmanın bir anlamı olmadığını kabul ediyorum.
Peter Lawrey

Yanıtlar:


225

doubleValue()Çift değeri bir BigDecimal nesnesinden almak için yöntemi kullanmanız gerekir .

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

Merhaba, ben de aynı kullandım, Ama sorun hem anser farklı hem de ondalık çıktım 13555261857.79'du ve 1.355526185779E10'u ikiye katladığımda ondalık
sayıları

@ user13926345 - Her ikisi de aynı değerlerdir. İlk çıktının değerin normal temsilidir ve diğerinin bilimsel temsilidir .
SudoRahul

35

Sen dönüştürebilirsiniz BigDecimaliçin doublekullanıyor .doubleValue(). Ama inan bana, para manipülasyonun varsa onu kullanma. Her zaman BigDecimaldoğrudan nesneler üzerinde gerçekleştirilmelidir . Bu hesaplamalardaki hassasiyet kaybı, para birimi ile ilgili hesaplamalarda büyük zaman problemleridir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.