Sınıfın BigDecimal
kayı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 BigDecimal
dahili bir sonsuzluk kavramı yok. Ayrıca, 100 9'luk bir dizeyi sonsuz olarak değil, kesinlik kaybeden double
verir 1.0E100
.
Makul bir uygulama nedir floatValueExact()
ve doubleValueExact()
?
Ben düşündüm double
birleş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.