Sınıfın BigDecimalkayıpsız dönüşümü garanti etmek için bazı yararlı yöntemleri vardır:
byteValueExact()shortValueExact()intValueExact()longValueExact()
Ancak yöntemler floatValueExact()ve doubleValueExact()mevcut değildir.
Ben yöntemleri için OpenJDK kaynak kodunu okumak floatValue()ve doubleValue(). Her ikisi de sırasıyla pozitif veya negatif sonsuzluğa geri dönebilecek Float.parseFloat()ve Double.parseDouble()sırasıyla geri dönmektedir. Örneğin, 10.000 9'luk bir dizeyi ayrıştırmak pozitif sonsuzluk döndürür. Anladığım kadarıyla BigDecimaldahili bir sonsuzluk kavramı yok. Ayrıca, 100 9'luk bir dizeyi sonsuz olarak değil, kesinlik kaybeden doubleverir 1.0E100.
Makul bir uygulama nedir floatValueExact()ve doubleValueExact()?
Ben düşündüm doublebirleştirerek çözümü BigDecimal.doubleValue(), BigDecial.toString(), Double.parseDouble(String)ve Double.toString(double), ama pis bir görünüyor. Burada sormak istiyorum çünkü daha basit bir çözüm olabilir (zorunlu!).
Açık olmak gerekirse, yüksek performanslı bir çözüme ihtiyacım yok.